docker的通信模式有:1、bridge网络模式,又称brigde网桥,在不指定网络的情况下,容器之间的通信都是通过bridge网桥进行通信的;2、host宿主机模式;3、container网络模式;4、none网络模式。

本教程操作环境:linux5.9.8系统、docker-1.13.1版、Dell G3电脑。
docker 容器的四种通信模式
1、bridge网络模式
首先,默认情况下docker运行容器时,宿主机会创建一个bridge网桥,是一个名叫docker 0的虚拟网桥 ,默认docker 0 ip为172.17.0.1,网桥再给容器分配虚拟子网ip,并且以网桥ip作为网关。在不指定网络的情况下,容器之间的通信都是通过bridge网桥进行通信。然后网桥在与宿主机镜像进行ip转换,端口映射等通信。
其实这种bridge网桥与容器,与宿主机之间的通信,有过网络方面经验的同学,看一下下面一张图,就应该可以轻松的了解这种通信的原理了,有点类似与三层路由交换。

2、host宿主机模式
如果容器指定网络模式为host,容器不会有自己的network namespace,而是和宿主机共用一个network网络及ip,容器不会有虚拟出自己的网卡、ip等,当然除了网络通信这一块和宿主机绑定了,其余的容器内容还是和宿主机安全隔离了。这种在做容器迁移时,很不方便,不推荐使用。原理图示如下,

3、container 网络模式:
解析:与另一个运行中的docker容器共享网络 --net=container:containerID
容器直接端口尽量别冲突,采用先到先得原则
4、none网络模式
容器指定网络模式-net为none时,docker容器拥有自己的network namespace,但是所有网络配置都得自行配置,如ip、网卡等,这种方式很麻烦,不推荐使用,原理图示如下

总结:
| Docker通信模式 | 配置 | 说明 |
|---|---|---|
| host模式 | –net=host | 容器和宿主机共享Network namespace。 |
| container模式 | –net=container:NAME_or_ID | 容器和另外一个容器共享Network namespace。 kubernetes中的pod就是多个容器共享一个Network namespace。 |
| none模式 | –net=none | 容器有独立的Network namespace,但并没有对其进行任何网络设置,如分配veth pair 和网桥连接,配置IP等。 |
| bridge模式 | –net=bridge | (默认为该模式) |
推荐学习:《docker视频教程》
Atas ialah kandungan terperinci docker的通信模式有哪些. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!
Perbezaan antara k8s dan docker
Apakah kaedah untuk docker memasuki bekas?
Apakah yang perlu saya lakukan jika bekas docker tidak boleh mengakses rangkaian luaran?
Apakah kegunaan imej buruh pelabuhan?
Cara menggunakan redis sebagai pelayan cache
Konfigurasikan persekitaran masa jalan Java
mintui
apakah maksud antara muka usb