1、默认docker网桥网络
在任何运行Docker引擎的Linux主机上,默认情况下都存在一个名称为bridge的本地Docker网络
。该网络是使用bridge网络驱动程序创建的,该驱动程序实例化出一个名为docker0的Linux网桥。这听起来可能令人困惑。
- bridge :是docker网络的名称;
- bridge :是一个docker网络驱动,或模板,基于它能够创建网络;
- docker0 :是Linux桥接的名称,它是用于实现网络的内核构建块;
- eth0:为bridge在容器中创建的网卡;
- veth:网桥和容器虚拟网卡的接口。
在独立的Linux Docker主机上,bridge如果未指定其他网络,则是容器连接的默认网络(Windows上是nat网络类型)。在以下示例中,创建了一个没有网络参数的容器。Docker Engine bridge默认将其连接到网络。在容器内部,eth0是由bridge驱动程序创建容器内部网卡,并由Docker原生IPAM驱动程序指定其地址。
默认的Docker Bridge网络
在这里以创建一个名称为bridge-demo-01的容器为例,说明bridge网络。
$ docker run –rm -it –name bridge-demo-01 busybox /bin/sh
1)查看宿主机中网桥的信息:主机网络的名称空间中存在Linux网桥。显示一个名称为
docker0的网桥。docker0具有一个名称为veth3e520f8,该接口提供从网桥到bridge-demo-01容器eth0网卡的连接。主机对于容器的请求流量通过veth3e520f8接口进入容器。
2)查看宿主机的ip路由:主机路由表显示,外部应用通过宿主机的eno1网卡(ip地址为10.0.33.201)
将流量引导至docker0网桥,并将通过网桥将请求流量引导至容器。
3)查看容器的ip信息:在容器中,通过ip address查看容器网卡的信息。其中,etho的ip地址为172.17.0.7,mac地址为02:42:ac:11:00:07。
4)查看容器的ip路由:容器路由表将流量引导至容器的eth0网卡,进而引导至docker0网桥。来自宿主机的请求,将通过docker0和veth接口进入到容器。默认情况下,bridge从范围172. [17-31] .0.0 / 16或192.168.[0-256] .0 / 20中分配一个子网,该子网不与任何现有主机接口重叠。
2、用户定义的docker网桥网络
除了默认网络之外,用户也可以创建自己的网络。对于用户定义的bridge网络,将在主机上设置一个新的Linux网桥。与默认bridge网络不同,用户定义的网络支持手动IP地址和子网分配。如果未分配,则Docker默认IPAM驱动程序会为其分配私有IP空间中的下一个可用的子网。
用户定义的网桥
在用户定义的bridge网络下,创建了两个容器。
- 创建一个名称为my_bridge子网;
- 创建一个名称为bridge-demo-002的容器,未显示指定ip地址;
- 创建一个名称为bridge-demo-003的容器,指定ip地址为10.0.0.254;
$ docker network create -d bridge –subnet 10.0.0.0/24 my_bridge
$ docker run –rm -itd –name bridge-demo-002 –net my_bridge busybox sh
$ docker run –rm -itd –name bridge-demo-003 –net my_bridge –ip 10.0.0.254 busybox sh
在宿主机上通过brctl show命令可以查看所创建的网桥和接口。
作者简介:季向远,本文版权归原作者所有。微博:ik8s
登录后评论
立即登录 注册