按容器名称解析

问题描述 投票:1回答:1

我有两个容器连接到默认的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。

docker
1个回答
1
投票

我有两个容器连接到默认的bridge网络...我可以通过IP地址从一个容器ping到另一个容器...但我不能通过名称ping ...


这是默认bridge网络的默认行为。

来自:Docker docs

用户定义的网桥与默认网桥之间的差异

  • 用户定义的桥接器在容器之间提供自动DNS解析。

默认网桥上的容器只能通过IP地址相互访问,除非您使用被认为是遗留的--link选项。在用户定义的桥接网络上,容器可以通过名称或别名相互解析。

© www.soinside.com 2019 - 2024. All rights reserved.