【docker容器技术】Bridge网络驱动程序

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网络默认的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​​​​

K8S中文社区微信公众号

评论 抢沙发

登录后评论

立即登录