码头工人网络模式

  

我们在使用码头工人运行创建码头工人容器时,可以用——净选项指定容器的网络模式,码头工人有以下4种网络模式:
1.主机模式,使用——净=主机指定。

  

2.容器模式,使用——净=容器:NAME_or_ID指定。

  

3.没有模式,使用——净=没有指定。

  

4.桥模式,使用——净=桥指定,默认设置

  

5.覆盖模式:使用——净=叠加(覆盖网络,跨主机通信)

  

一、主机模式

  

码头工人使用的网络实际上和宿主机一样,在容器内看到的网卡ip是宿主机上的ip。

  

众所周知,码头工人使用了Linux的名称空间技术来进行资源隔离,如PID名称空间隔离进程,山命名空间隔离文件系统,网络名称空间隔离网络等。一个网络名称空间提供了一份独立的网络环境,包括网卡,路,由Iptable规则等都与其他的网络名称空间隔离。一个码头工人容器一般会分配一个独立的网络名称空间。但如果启动容器的时候使用主机模式,那么这个容器将不会获得一个独立的网络名称空间,而是和宿主机共用一个网络名称空间。容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口

  

码头工人————净=主机运行centos/bin/bash
码头工人网络模式”> <br/>可以看到容器内网卡直接复用宿主机网络,该模式将禁用码头工人容器的网络隔离<br/> <img src=

  

二、集装箱模式
多个容器使用共同的网络看到的ip是一样的。

  

在理解了主机模式后,这个模式也就好理解了。这个模式指定新创建的容器和已经存在的一个容器共享一个网络名称空间,而不是和宿主机共享。新创建的容器不会创建自己的网卡,配置自己的IP,而是和一个指定的容器共享IP、端口范围等。同样,两个容器除了网络方面,其他的如文件系统,进程列表等还是隔离的。两个容器的进程可以通过罗网卡设备通信

  

例子:
码头工人——运行——净=容器:169 c875f4ba0 centos/bin/bash(复用169 c875f4ba0容器的网络)
奥胪饭と送缒J健?可以看出和容器169 c875f4ba0的网络环境一样

  

三,没有模式
这种模式下不会配置任何网络。

  

这个模式和前两个不同。在这种模式下,码头工人容器拥有自己的网络名称空间,但是,并不为码头工人容器进行任何网络配置。也就是说,这个码头工人容器没有网卡,IP,路由等信息。需要我们自己为码头工人容器添加网卡,配置IP等。
例子:
码头工人——运行——净=没有centos/bin/bash
码头工人网络模式”> <br/>可以看的出,并没有配置网卡信息,需要自己手动配置<br/> <img src=

  

四、桥模式
桥模式是码头工人默认的网络设置,此模式会为每一个容器分配网络名称空间,设置IP等,并将一个主机上的码头工人容器连接到一个虚拟网桥上。

  

同一个宿主机上的所有容器会在同一个网段下,相互之间是可以通信的

  

例子:
码头工人——运行——净=桥centos/bin/bash
码头工人网络模式

  

码头工人网络模式

  

对比宿主机网桥,发现容器内网卡和宿主机网桥在同一网段。
通过网桥和外界通信
码头工人网络模式

  

五,覆盖neetwork模式(跨主机通信)
容器在两个跨主机进行通信的时候,是使用覆盖网络这个网络模式进行通信,如果使用主机也可以实现跨主机进行通信,直接使用这个物理的ip地址就可以进行通信.overlay它会虚拟出一个网络,在这个叠加网络模式里面,有一个类似于服务网关的地址,然后把这个包转发到物理服务器这个地址,最终通过路由和交换,到达另一个服务器的ip地址
在码头工人容器里面覆盖是怎么实现的呢

  

例子:
宿主机:172.16.1.56,172.16.1.57修改
vim/lib/systemd/system/docker.服务

码头工人网络模式