在这里,我将容器之间的通讯分为两部分,① 在同一个宿主机上,容器之间的通讯 ② 在不同宿主机上容器之间的通讯
在安装docker后,默认会创建三个网络 docker network ls
host:容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口。
Container:创建的容器不会创建自己的网卡,配置自己的IP,而是和一个指定的容器共享IP、端口范围。
None:该模式关闭了容器的网络功能。
Bridge:此模式会为每一个容器分配、设置IP等,并将容器连接到一个docker0虚拟网桥,通过docker0网桥以及Iptables nat表配置与宿主机通信。 也是默认使用的方式
同个宿主机容器之间的通讯
先做一个示范
我们启动两个容器 docker run -it --name centos1 -d centos docker run -it --name centos2 -d centos
1. 通过容器IP进行访问 。但是IP不固定,所以这并不是一个很好的方案。
我们使用inspect 分别查出两个的ip 地址。172.17.0.3 172.17.0.2
进入到容器内部我们进行ping 下。 发现能够ping 通。
我们现在使用 centos1 的IP是3,centos2 是2,我们将两个容器都关闭,启动centos1,发现IP变了。
2.通过宿主机ip+port 进行访问,通讯受到限制。
3.通过link 进行建立连接(官方不推荐使用,就不详细说明了)
4.官方推荐使用 User-defined networks
用docker network 创建一个新的网络,在docker -run 的时候,指定到新创建的这个网络上
①创建一个新的网络 docker network create my-network
②docker run -it --network my-network --name centos1 -d centos