docker容器间互联
通过容器名称互联
即在同一个宿主机上的容器之间可以通过自定义的容器名称相互访问,比如一个业务前端静态页面是使用nginx,动态页面使用的是tomcat,由于容器在启动的时候其内部IP地址是DHCP 随机分配的,所以如果通过内部访问的话,自定义名称是相对比较固定的,因此比较适用于此场景。
启动第一个容器
[root@mysql app1]# docker run -itd --name tomcat-web -p 8801:8080 tomcat-web:app1 b6471b4d34c6aeedcae1c1048632dc326acdd37d385b8afbaa3ace186e433c87
查看容器的hosts文件
[root@b6471b4d34c6 /]# cat /etc/hosts 127.0.0.1 localhost ::1 localhost ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters 172.17.0.2 b6471b4d34c6 1.1.1.1 test.com
启动第二个容器,与第一个容器关联
[root@mysql app1]# docker run -itd --name nginx-link --link tomcat-web nginx:v1
06f2bc85b84d65407f1cdb4ec73b3c8d3cff783883593185ac676064258703cb
查看容器的hosts
[root@06f2bc85b84d /]# cat /etc/hosts 127.0.0.1 localhost ::1 localhost ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters 172.17.0.2 tomcat-web b6471b4d34c6 172.17.0.3 06f2bc85b84d
测试连通性
[root@06f2bc85b84d /]# ping tomcat-web PING tomcat-web (172.17.0.2) 56(84) bytes of data. 64 bytes from tomcat-web (172.17.0.2): icmp_seq=1 ttl=64 time=0.077 ms 64 bytes from tomcat-web (172.17.0.2): icmp_seq=2 ttl=64 time=0.089 ms ^C --- tomcat-web ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 31ms rtt min/avg/max/mdev = 0.077/0.083/0.089/0.006 ms [root@06f2bc85b84d /]# ping b6471b4d34c6 PING tomcat-web (172.17.0.2) 56(84) bytes of data. 64 bytes from tomcat-web (172.17.0.2): icmp_seq=1 ttl=64 time=0.040 ms 64 bytes from tomcat-web (172.17.0.2): icmp_seq=2 ttl=64 time=0.090 ms ^C --- tomcat-web ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 59ms rtt min/avg/max/mdev = 0.040/0.065/0.090/0.025 ms
通过自定义容器别名互联
上一步骤中,自定义的容器名称可能后期会发生变化,那么一旦名称发生变化,程序之间也要随之发生变化,比如程序通过容器名称进行服务调用,但是容器名称发生变化之后再使用之前的名称肯定是无法成功调用,每次都进行更改的话又比较麻烦,因此可以使用自定义别名的方式解决,即容器名称可以随意更,只要不更改别名即可,具体如下:
命令格式:
docker run -d --name 新容器名称 --link 目标容器名称:自定义的名称 -p 本地端口:容器端口 镜像名称 shell命令
[root@mysql ~]# docker run -d --name test-link --link tomcat-web:java-server nginx:v1 41b4195710140a2ba45750dfd8bdf4953092d500d5edaf9034a83570890ab128 [root@mysql ~]# docker exec -it test-link bash [root@41b419571014 /]# cat /etc/hosts 127.0.0.1 localhost ::1 localhost ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters 172.17.0.2 java-server b6471b4d34c6 tomcat-web 172.17.0.4 41b419571014 [root@41b419571014 /]# ping java-server PING java-server (172.17.0.2) 56(84) bytes of data. 64 bytes from java-server (172.17.0.2): icmp_seq=1 ttl=64 time=0.052 ms 64 bytes from java-server (172.17.0.2): icmp_seq=2 ttl=64 time=0.091 ms ^C --- java-server ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 10ms
posted on 2021-06-25 14:10 hopeless-dream 阅读(137) 评论(0) 编辑 收藏 举报