我有两个容器连接到默认的bridge
网络:
» docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3cc528ddbe7e gitlab/gitlab-runner:latest "/usr/bin/dumb-ini..." 25 minutes ago Up 25 minutes gitlab-runner
3c01073065c7 gitlab/gitlab-ee:latest "/assets/wrapper" About an hour ago Up About an hour (healthy) 0.0.0.0:45022->22/tcp, 0.0.0.0:45080->80/tcp, 0.0.0.0:45443->443/tcp gitlab
我找到了与docker inspect
相对应的IP地址(获取它们的更好方法?),我可以通过IP地址从一个容器ping到另一个容器:
» docker exec -it gitlab-runner bash
root@3cc528ddbe7e:/# ping 172.17.0.3
PING 172.17.0.3 (172.17.0.3) 56(84) bytes of data.
64 bytes from 172.17.0.3: icmp_seq=1 ttl=64 time=0.079 ms
64 bytes from 172.17.0.3: icmp_seq=2 ttl=64 time=0.063 ms
64 bytes from 172.17.0.3: icmp_seq=3 ttl=64 time=0.060 ms
^C
--- 172.17.0.3 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1999ms
rtt min/avg/max/mdev = 0.060/0.067/0.079/0.010 ms
但我无法通过名字ping:
root@3cc528ddbe7e:/# ping gitlab
ping: unknown host gitlab
这是为什么?我以为docker通过容器名称提供DNS。
答案 0 :(得分:1)
我有两个容器连接到默认的bridge
网络...
我可以通过IP地址从一个容器ping到另一个容器......
但我无法通过名字ping ...
这是默认bridge
网络的默认行为。
来自:Docker docs
用户定义的网桥与默认网桥之间的差异
- 用户定义的网桥在容器之间提供自动DNS解析。
默认网桥网络上的容器只能通过IP地址相互访问,除非您使用
--link
选项,该选项被视为旧版。在用户定义的桥接网络上,容器可以通过名称或别名相互解析。