docker(4)docker的网络,自定义网桥
Docker 的网络
运行 ifconfig 找到 docker0 : 虚拟网卡默认网卡名称为docker0

查看docker 的网桥:
我这里默认们没有进行安装 网桥管理设备:进行安装一下;
yum install bridge-utils

命令:查看网桥crctl show:

注意上图中的interfaces 这里为空,我们启动一个新的容器如下:
命令: docker run -d -it --name centos6 centos

我们进入容器中查看该容器的ip 地址
我这里的容器是最小化的centos,一般情况我都会安装一下几个
yum install net-tools
yum install vim
yum install telnet

我看查看容器中的IP地址:
Docker 默认已经给我们分配了地址

退出后在查看我们本机的网桥:这里注意 interfaces 发生了变化

这是docker0: 在容器创建时,为连接容器创建的网络接口。
我们运行容器的时候也可以查看该网络接口:

修改docker0 的ip地址: 使用超级管理员权限
sudo ifconfig docker0 192.168.254.0 netmask 255.255.255.0

自定义网桥:
- 用户定义的桥接器可在容器化应用程序之间提供更好的隔离和互操作性。
连接到同一用户定义的网桥的容器会自动将所有端口相互暴露,并且不会向外界显示任何端口。这使得容器化应用程序可以轻松地相互通信,而不会意外地打开对外界的访问。
想象一下具有Web前端和数据库后端的应用程序。外部世界需要访问Web前端(可能在端口80上),但只有后端本身需要访问数据库主机和端口。使用用户定义的网桥,只需要打开Web端口,并且数据库应用程序不需要打开任何端口,因为Web前端可以通过用户定义的网桥访问它。
如果在默认网桥上运行相同的应用程序堆栈,则需要打开Web端口和数据库端口,并使用 每个的标记-p或--publish标记。这意味着Docker主机需要通过其他方式阻止对数据库端口的访问。
- 用户定义的桥接器在容器之间提供自动DNS解析。
默认网桥上的容器只能通过IP地址相互访问,除非您使用被认为是遗留的--link选项。在用户定义的桥接网络上,容器可以通过名称或别名相互解析。
想象一下与前一点相同的应用程序,具有Web前端和数据库后端。如果你打电话给你的容器web和db,Web容器可以在连接到数据库容器db,无论哪个码头工人托管应用程序堆栈上运行。
如果在默认桥接网络上运行相同的应用程序堆栈,则需要在容器之间手动创建链接(使用旧--link 标志)。这些链接需要在两个方向上创建,因此您可以看到这对于需要通信的两个以上容器而言变得复杂。或者,您可以操作/etc/hosts容器中的文件,但这会产生难以调试的问题。
- 容器可以在运行中与用户定义的网络连接和分离。
在容器的生命周期中,您可以动态地将其与用户定义的网络连接或断开连接。要从默认桥接网络中删除容器,您需要停止容器并使用不同的网络选项重新创建容器。
- 每个用户定义的网络都会创建一个可配置的网桥。
如果容器使用默认网桥,则可以对其进行配置,但所有容器都使用相同的设置,例如MTU和iptables规则。此外,配置默认桥接网络发生在Docker本身之外,并且需要重新启动Docker。
使用创建和配置用户定义的网桥 docker network create。如果不同的应用程序组具有不同的网络要求,则可以在创建时单独配置每个用户定义的网桥。
- 默认桥接网络上的链接容器共享环境变量。
最初,在两个容器之间共享环境变量的唯一方法是使用--link标志链接它们。用户定义的网络无法实现这种类型的变量共享。但是,有更好的方法来共享环境变量。一些想法:
- 多个容器可以使用Docker卷装入包含共享信息的文件或目录。
- 可以一起启动多个容器
docker-compose,并且compose文件可以定义共享变量。 - 您可以使用swarm服务而不是独立容器,并利用共享机密和 配置。
连接到同一用户定义的网桥的容器有效地将所有端口相互暴露。对于可以访问不同网络上的容器或非Docker主机的端口,必须使用or 标志发布该端口。-p--publish
上面是docker 文档中的一段话:整体描述了docker 自定义网桥的用处。
开始自定义网桥:
我这里开启了一台新我们查看网络信息
Ifconfig

首先停止容器运行:
systemctl stop docker.service

停止docker0 默认网桥
sudo ip link set dev docker0 down

删除docker0 网桥
sudo ip link del dev docker0

上图中可以看到网桥已经删除成功:
创建新的网桥:并配置IP地址,并启动网桥
sudo brctl addbr docker1
sudo ip addr add 192.168.100.1/24 dev docker1
sudo ip link set dev docker1 up

配置使用自定义网桥:保存退出
vi /etc/docker/daemon.json

启动并运行一个容器:
systemctl start docker.service
docker run -d -it --name centos1 centos
进入容器中:
docker inspect -f {{.State.Pid}} centos1
nsenter --target 19745 --ipc --uts --mount --pid --net

安装ifconfig 命令并查看 容器IP
yum install net-tools

查看网络

有不足之处 希望大家指出相互学习,
本文原创:转载请注明出处 谢谢!
docker(4)docker的网络,自定义网桥的更多相关文章
- docker网络配置之自定义网桥
使用特定范围的 IP (仅适用于v1.x)不适用于新版的v1.1x Docker 会尝试寻找没有被主机使用的 ip 段,尽管它适用于大多数情况下,但是它不是万能的,有时候我们还是需要对 ip 进一步规 ...
- Docker技术入门与实战 第二版-学习笔记-8-网络功能network-3-容器访问控制和自定义网桥
1)容器访问控制 容器的访问控制,主要通过 Linux 上的 iptables防火墙来进行管理和实现. iptables是 Linux 上默认的防火墙软件,在大部分发行版中都自带. 容器访问外部网络 ...
- 【Network】修改docker启动默认网桥docker0为自定义网桥
自定义网桥 除了默认的 docker0 网桥,用户也可以指定网桥来连接各个容器. 在启动 Docker 服务的时候,使用 -b BRIDGE或--bridge=BRIDGE 来指定使用的网桥. 如果服 ...
- Docker的4种网络模式
我们在使用docker run创建Docker容器时,可以用--net选项指定容器的网络模式,Docker有以下4种网络模式: · host模式,使用--net=host指定. · container ...
- Docker入门篇(二)之docker的单主机网络
Docker 安装时会自动在host上创建三个网络,我们可用 docker network ls命令查看: [root@localhost ~]# docker network ls NETWORK ...
- docker进阶——数据管理与网络
一.数据卷管理 用户在使用 Docker 的过程中,势必需要查看容器内应用产生的数据,或者 需要将容器内数据进行备份,甚至多个容器之间进行数据共享,这必然会涉及 到容器的数据管理 (1)Data Vo ...
- Docker进阶一:网络篇
理解Docker0 查看本地ip ip addr [root@VM-0-6-centos ~]# ip addr #本机回环地址 1: lo: <LOOPBACK,UP,LOWER_UP> ...
- Docker实践(2)—虚拟网络
1 docker(container)的虚拟网络 docker的虚拟网络结构: host创建一个虚拟bridge,每个container对应一个虚拟网络设备(TAP设备),与bridge一起构成一个虚 ...
- docker学习3-虚拟网络模式
一.虚拟机网络模式 在理解docker网络隔离前,先看下之前虚拟机里对网络的处理,VirtualBox中有4中网络连接方式: NAT Bridged Adapter Internal Host-onl ...
随机推荐
- C++ 利用流来进行string和其他类的转换
通过这种方法可以实现任意转换,需要头文件 #include<string> #include<sstream> 期中sstream提供了我们的主角string流,下面给出int ...
- thinkphp框架实现删除上传的文件
public function article_delete(){ $article_id = I('get.article_id'); $model = M('zx_article'); $data ...
- Flask请求扩展和数据库连接池
1.1.Flask之请求扩展 #!/usr/bin/env python # -*- coding:utf-8 -*- from flask import Flask, Request, render ...
- oracle数据库-错误编码大全
ORA-00001: 违反唯一约束条件 (.) ORA-00017: 请求会话以设置跟踪事件 ORA-00018: 超出最大会话数 ORA-00019: 超出最大会话许可数 ORA-000 ...
- 盒子模型、IFC、BFC和Collapsing margins
前言 盒子模型作为CSS基础中的基础,曾一度以为掌握了IE和W3C标准下的块级盒子模型即可,但近日在学习行级盒子模型时发现原来当初是如此幼稚可笑.本文尝试全面叙述块级.行级盒子模型的特性.作为近日学习 ...
- Java bean和json互转时,屏蔽某个属性
有的时候我们把java bean 转换成json的时候,希望屏蔽掉某个属性,这时可以在java bean的属性上加上@JsonIgnore注解,在com.fasterxml.jackson.annot ...
- SQL Server 2008更改数据库保存路径
本文由荒原之梦原创,原文链接:http://zhaokaifeng.com/?p=641 操作环境: WindowsXP 数据库: Microsoft SQL Server 2008 操作步骤: 选中 ...
- 一次数组越界的bug经历
数组和指针都是C里面的好东西,但是一旦使用不当,真的会让人抓狂. 下面是写程序时遇到的一次数组越界的经历,感觉对以后写程序有点启发,所以记录下来. 起因: 我想用OLED动态显示一组浮点数,而且浮点数 ...
- springMVC引入Validation详解
本文简单介绍如何引入validation的步骤,如何通过自定义validation减少代码量,提高生产力.特别提及:非基本类型属性的valid,GET方法的处理,validation错误信息的统一re ...
- 7-20 jquery遍历节点,bootstrap模态框绑定事件和解绑,mock.js,model.urlroot,id,打基础
7-19 1:$(event.target).parents().filter("tr").find("host-name") 为什么选择不到别的host-na ...