docker网络模式

docker的网络模式大致可以分成五种类型,在安装完docker之后,宿主机上会创建三个网络,分别是bridge网络,host网络,none网络,可以使用docker network ls命令查看。
20180703153059661557564.png

1.none网络

这种网络模式下容器只有lo回环网络,没有其他网卡。none网络可以在容器创建时通过—network=none来指定。这种类型的网络没有办法联网,封闭的网络能很好的保证容器的安全性。

20180703153059662319419.png

2.host网络

通过命令—network=host指定,使用host模式的容器可以直接使用docker host的IP地址与外界通信,容器内部的服务端口也可以使用宿主机的端口,不需要进行NAT,host最大的优势就是网络性能比较好,但是docker host上已经使用的端口就不能再用了,网络的隔离性不好。
20180703153059663461252.png

3.bridge网络

容器的默认网络模式,docker在安装时会创建一个名为docker0的Linux bridge,在不指定—network的情况下,创建的容器都会默认挂到docker0上面。
20180703153059664188846.png

开始docker0上没有任何网络设备,
20180703153059664769666.png
创建一个容器之后一个新的网络接口被挂载到了docker0上,这个就是容器创建时创建的虚拟网卡。bridge模式为容器创建独立的网络栈,保证容器内的进程使用独立的网络环境,使容器之间,容器和docker host之间实现网络隔离。

4.container模式

创建容器时使用—network=container:NAME_or_ID这个模式在创建新的容器的时候指定容器的网络和一个已经存在的容器共享一个Network Namespace,但是并不为docker容器进行任何网络配置,这个docker容器没有网卡、IP、路由等信息,需要手动的去为docker容器添加网卡、配置IP等。

5.user-defined模式

用户自定义模式主要可选的有三种网络驱动:bridge、overlay、macvlan。bridge驱动用于创建类似于前面提到的bridge网络;overlay和macvlan驱动用于创建跨主机的网络。