环境准备
我这里有两个虚拟机,并且在两个虚拟机上都安装了docker,并且起了容器,这里要实现,两个容器之间可以直接通信。
#虚拟机A,计算机名:wulaoer.org 宿主机ip:10.211.55.14 docker网段: 10.88.0.0 #虚拟机B,计算机名:www.wulaoer.org 宿主机ip:10.211.55.19 docker网段: 172.17.0.0
先创建两个容器,分别在两个虚拟机上,安装方法就不说了,直接下载镜像并启动容器。
#虚拟机A [root@wulaoer.org ~]# docker pull centos [root@wulaoer.org ~]# docker images Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg. REPOSITORY TAG IMAGE ID CREATED SIZE quay.io/centos/centos latest 300e315adb2f 24 months ago 217 MB [root@wulaoer.org ~]# docker run -itd 300e315adb2f /bin/bash [root@wulaoer.org ~]# docker ps -a Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f36832e7606e quay.io/centos/centos:latest /bin/bash 7 weeks ago Up 7 weeks ago gallant_mahavira #虚拟机B [root@www.wulaoer.org ~]# docker pull centos [root@www.wulaoer.org ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE centos latest 5d0da3dc9764 14 months ago 231MB [root@www.wulaoer.org ~]# docker run -itd 5d0da3dc9764 /bin/bash [root@www.wulaoer.org ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES d80b5a834802 5d0da3dc9764 "/bin/bash" 6 minutes ago Up 6 minutes sharp_davinci
环境已经准备好了,两个虚拟机上已经启动容器了,下面我们需要给宿主机加路由表,在A虚拟机上把B虚拟机上的docker网段加到自己的路有表中,然后在B虚拟机上把A虚拟机上容器的网段加入到B虚拟机的路由表中。
#先查看网段 [root@wulaoer ~]# docker inspect f36832e7606e | grep IPAddress Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg. "IPAddress": "10.88.0.2", "IPAddress": "10.88.0.2", [root@www.wulaoer.org ~]# docker inspect d80b5a834802 | grep IPAddress "SecondaryIPAddresses": null, "IPAddress": "172.17.0.2", "IPAddress": "172.17.0.2", #添加路有表 [root@wulaoer.org ~]# sudo route add -net 172.17.0.0 netmask 255.255.0.0 gw 10.211.55.19 [root@www.wulaoer.org ~]# sudo route add -net 10.88.0.0 netmask 255.255.0.0 gw 10.211.55.14 #如果添加错误了可以删除 route del -net 172.17.0.0 netmask 255.255.0.0
如果想修改docker的网段可以在/etc/docker/daemon.json文件中修改,上面已经天际路有表了,下面测试一下两个容器之间是否可以通信,我们这里直接使用ping命令即可。
#虚拟机A进行测试 [root@wulaoer ~]# docker exec -it f36832e7606e /bin/bash Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg. [root@f36832e7606e /]# ping 172.17.0.2 PING 172.17.0.2 (172.17.0.2) 56(84) bytes of data. 64 bytes from 172.17.0.2: icmp_seq=1 ttl=62 time=0.835 ms 64 bytes from 172.17.0.2: icmp_seq=2 ttl=62 time=0.453 ms #虚拟机B进行测试 [root@www.wulaoer.org ~]# docker exec -it d80b5a834802 /bin/bash [root@d80b5a834802 /]# ping 10.88.0.2 PING 10.88.0.2 (10.88.0.2) 56(84) bytes of data. 64 bytes from 10.88.0.2: icmp_seq=1 ttl=62 time=0.764 ms 64 bytes from 10.88.0.2: icmp_seq=2 ttl=62 time=0.883 ms
两个容器之间直接通信实现了,说明通过路有的方式可以实现两个容器之间的通信的,如果使用iptables也是可以实现的,这里就不做过多的描述了,后期如有时间会更新一下使用iptables实现两个容器之间的通信。
您可以选择一种方式赞助本站
支付宝扫一扫赞助
微信钱包扫描赞助
赏