容器之间可以通过IP Docker DNS Server 或joined容器三种方式通信
1.ip通信
从前面的例子可以得出一个结论:两个容器要能通信,必须有属于同一个网络的网卡 具体做法就是在容器创建的时候通过 --network 指定相应的网络 或者通过docker network connect 将现有的容器加入到指定的网络 # 参考之前的rhel7-up和busybox的例子
2.Docker DNS Server
通过IP访问容器虽然满足了通信的需求,但是还是不够灵活,因为在部署应用之前可能无法确定IP 部署之后再指定要访问的IP会比较麻烦 对于这个问题 可以通过docker 自带的DNS服务解决
从docker1.10版本开始,docker daemon实现了一个内嵌的DNS server,使容器可以直接通过“容器名”通信,方法很简单,只要在启动时用 --name为容器命名就可以了
[root@server7 ~]# docker run -it --network=my_net2 --name=bbox1 busybox
/ # ping bbox2
PING bbox2 (172.22.16.3): 56 data bytes
64 bytes from 172.22.16.3: seq=0 ttl=64 time=0.041 ms
64 bytes from 172.22.16.3: seq=1 ttl=64 time=0.047 ms
^C
--- bbox2 ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 0.041/0.044/0.047 ms
[root@server7 ~]# docker run -it --network=my_net2 --name=bbox2 busybox
/ # ping bbox1
PING bbox1 (172.22.16.2
docker-容器间的通信
最新推荐文章于 2023-03-06 11:45:36 发布