按容器名称解析

时间:2018-02-28 09:14:53

标签: docker

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

1 个答案:

答案 0 :(得分:1)

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

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

来自:Docker docs

  

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

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

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