Docker-容器互联--link

本文介绍了Docker容器间的通信机制,重点讲解了如何使用--link参数实现容器间基于名称的互联互通,并探讨了其局限性及配置细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 单纯的通过ping命令无法实现容之间通过容器名互联

[root@QK ~]# docker ps
CONTAINER ID   IMAGE      COMMAND                  CREATED        STATUS        PORTS                                         NAMES
ca716626930c   tomcat     "catalina.sh run"        47 hours ago   Up 47 hours   0.0.0.0:49154->8080/tcp, :::49154->8080/tcp   tomcat02
70b4e9694156   tomcat     "catalina.sh run"        47 hours ago   Up 47 hours   0.0.0.0:49153->8080/tcp, :::49153->8080/tcp   tomcat01
f47273774542   mytomcat   "/bin/sh -c '/usr/lo…"   4 days ago     Up 4 days     0.0.0.0:9090->8080/tcp, :::9090->8080/tcp     mytomcat06
[root@QK ~]# docker exec -it tomcat01 ping tomcat02
ping: tomcat02: Name or service not known
[root@QK ~]# 

2. 在容器启动时通过--link,就可以实现容器名互联,但也只是单向的

docker run -d -P --name tomcat03 --link tomcat02 tomcat
[root@QK ~]# docker run -d -P --name tomcat03 --link tomcat02 tomcat
8988587234d5467fd4a109d8387eccb5160075864207dfc9865701b84c269ac7
[root@QK ~]# docker exec -it tomcat03 ping tomcat02
PING tomcat02 (172.17.0.5) 56(84) bytes of data.
64 bytes from tomcat02 (172.17.0.5): icmp_seq=1 ttl=64 time=0.117 ms
64 bytes from tomcat02 (172.17.0.5): icmp_seq=2 ttl=64 time=0.069 ms
64 bytes from tomcat02 (172.17.0.5): icmp_seq=3 ttl=64 time=0.067 ms
64 bytes from tomcat02 (172.17.0.5): icmp_seq=4 ttl=64 time=0.062 ms
64 bytes from tomcat02 (172.17.0.5): icmp_seq=5 ttl=64 time=0.062 ms
^C
--- tomcat02 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 183ms
rtt min/avg/max/mdev = 0.062/0.075/0.117/0.022 ms
[root@QK ~]# docker exec -it tomcat02 ping tomcat03
ping: tomcat03: Name or service not known

3. 查看tomcat03的hosts

[root@QK ~]# docker exec -it tomcat03 cat /etc/host
cat: /etc/host: No such file or directory
[root@QK ~]# docker exec -it tomcat03 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.5	tomcat02 ca716626930c
172.17.0.6	8988587234d5
[root@QK ~]# 
[root@QK ~]# docker exec -it tomcat02 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.5	ca716626930c
[root@QK ~]# 

4. 说明--link,是在tomcat03的hosts文件增加了tomcat02的映射,映射也是单向的

5. 如果需要双向映射,必须容器之间互相--link

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值