无法parsingDocker容器之间的主机名

我有两个容器创build在单独的撰写文件(为应用程序隔离完成 – 每个应用程序可能有多个容器在撰写文件中定义,如支持数据库)。

这些容器通过名为“common”的外部networking进行链接。

一个撰写文件的例子是:

version: '2' services: rabbitmq: image: "rabbitmq:3-management" hostname: "rabbitmq" container_name: "rabbitmq" environment: RABBITMQ_ERLANG_COOKIE: "SWQOKODSQALRPCLNMEQG" RABBITMQ_DEFAULT_USER: "rabbitmq" RABBITMQ_DEFAULT_PASS: "rabbitmq" RABBITMQ_DEFAULT_VHOST: "/" ports: - "15672:15672" - "5672:5672" networks: default: external: name: common 

docker版本:

 root@server:~/# docker version Client: Version: 1.12.1 API version: 1.24 Go version: go1.6.3 Git commit: 23cf638 Built: Mon, 10 Oct 2016 21:38:17 +1300 OS/Arch: linux/amd64 Server: Version: 1.12.1 API version: 1.24 Go version: go1.6.3 Git commit: 23cf638 Built: Mon, 10 Oct 2016 21:38:17 +1300 OS/Arch: linux/amd64 root@server:~/# docker-compose version docker-compose version 1.8.1, build 878cff1 docker-py version: 1.10.3 CPython version: 2.7.9 OpenSSL version: OpenSSL 1.0.1e 11 Feb 2013 

通用networking是使用

 docker network create common 

然后我使用下列容器

 docker-compose up -d 

检查networking我得到:

 root@server:~# docker network inspect b5e8f81a8ea0 [ { "Name": "common", "Id": "b5e8f81a8ea063149298d2023be5740c8d971e0329a741abdafbac59fd882684", "Scope": "local", "Driver": "bridge", "EnableIPv6": false, "IPAM": { "Driver": "default", "Options": {}, "Config": [ { "Subnet": "192.168.0.0/16" } ] }, "Internal": false, "Containers": { "6137864e71161b417f0659b88b3e17538fb60277ca818e58b255d5cc17932c3c": { "Name": "db", "EndpointID": "5d9800dedcc22bdb8e08a1d04712df4e2f2846f5448e4ce888f164f7877ce5a4", "MacAddress": "02:42:c0:a8:00:03", "IPv4Address": "192.168.0.3/16", "IPv6Address": "" }, "61b1288bf250196d02f3933c8bbde732fbcd24bdf3949c4f53b3b05aa87f3c7f": { "Name": "rabbitmq", "EndpointID": "484e3cc05e5a852150e6a7c429dc73d9ce4b097d4f53b07800c9998ef977565c", "MacAddress": "02:42:c0:a8:00:02", "IPv4Address": "192.168.0.2/16", "IPv6Address": "" } }, "Options": {}, "Labels": {} } ] 

其他容器已经崩溃,因为它们无法parsing“rabbitmq”主机名。 检查坠毁的容器显示他们在同一networking上:

 root@server:~# docker inspect bae5214bf619 "NetworkSettings": { "Bridge": "", "SandboxID": "54a8b0833204522a75cf2e4195c5838b336ab82438aa53d9f1f38276eb9f6061", "HairpinMode": false, "LinkLocalIPv6Address": "", "LinkLocalIPv6PrefixLen": 0, "Ports": null, "SandboxKey": "/var/run/docker/netns/54a8b0833204", "SecondaryIPAddresses": null, "SecondaryIPv6Addresses": null, "EndpointID": "", "Gateway": "", "GlobalIPv6Address": "", "GlobalIPv6PrefixLen": 0, "IPAddress": "", "IPPrefixLen": 0, "IPv6Gateway": "", "MacAddress": "", "Networks": { "common": { "IPAMConfig": null, "Links": [ "db" ], "Aliases": [ "rulesengine", "bae5214bf619" ], "NetworkID": "b5e8f81a8ea063149298d2023be5740c8d971e0329a741abdafbac59fd882684", "EndpointID": "", "Gateway": "", "IPAddress": "", "IPPrefixLen": 0, "IPv6Gateway": "", "GlobalIPv6Address": "", "GlobalIPv6PrefixLen": 0, "MacAddress": "" } } } 

如果我login到不试图访问rabbitmq容器但未崩溃的容器,则主机名不会parsing。 但是,rabbitmq容器的ip地址是可达的。

 root@server:~/David.Deployments# docker exec -it 6137864e7116 bash root@db:/# ping rabbitmq ping: unknown host root@db:/# ping 192.168.0.2 PING 192.168.0.2 (192.168.0.2): 56 data bytes 64 bytes from 192.168.0.2: icmp_seq=0 ttl=64 time=0.149 ms 64 bytes from 192.168.0.2: icmp_seq=1 ttl=64 time=0.043 ms 

login到rabbitmq容器时:

 root@server:/# docker exec -it rabbitmq bash root@rabbitmq:/# uname -n rabbitmq root@rabbitmq:/# ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 445: eth0@if446: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default link/ether 02:42:c0:a8:00:02 brd ff:ff:ff:ff:ff:ff inet 192.168.0.2/16 scope global eth0 valid_lft forever preferred_lft forever inet6 fe80::42:c0ff:fea8:2/64 scope link valid_lft forever preferred_lft forever root@rabbitmq:/# 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 192.168.0.2 rabbitmq 

是否有任何build议可以解决这个问题或我应该检查的东西?

更新1

  • 我已经尝试添加external_links ,但问题依然存在,没有条目添加到/etc/hosts为外部主机名'rabbitmq'

根据这里的讨论: https : //github.com/docker/docker/issues/13381

poga的build议重新启动docker为我工作systemctl restart docker