无法使用新的1.10 DNS SD访问容器
我一直在尝试最新的RCdocker和几天,最后,今天,新的稳定版本(分别为1.10和1.6)。
在1.9中添加的新的networking东西迄今为止是非常棒的。 但是,由于我升级到1.10rc1(到目前为止每个RC和稳定),在同一个用户定义的networking中的容器不能再find对方。 事实上,他们现在甚至无法到达外面的世界。
一个简单的例子,文件test_docker / docker-compose.yml:
version: '2' services: db1: image: mysql environment: MYSQL_ALLOW_EMPTY_PASSWORD: yes db2: image: mysql environment: MYSQL_ALLOW_EMPTY_PASSWORD: yes
这会创build两个包含官方映像的MySQL容器。 根据撰写文档,应创build一个新的testdocker_default ,这两个容器自动连接,情况如下:
docker network inspect testdocker_default [ { "Name": "testdocker_default", "Id": "820f702e8e685567e4f1a8638cd9be305e96e37fcd741306eed6c1cf0d54ba02", "Scope": "local", "Driver": "bridge", "IPAM": { "Driver": "default", "Options": null, "Config": [ { "Subnet": "172.17.0.0/16", "Gateway": "172.17.0.1/16" } ] }, "Containers": { "16d5594bdfd11f55d33a207612b8447f6b50ff4be8b42d2313707b06ca618556": { "Name": "testdocker_db2_1", "EndpointID": "b6d5ff10fba860c01ac7a6508e56c5e116296cd06ea2158c695897e18fcd50ce", "MacAddress": "02:42:ac:11:00:03", "IPv4Address": "172.17.0.3/16", "IPv6Address": "" }, "9b8b885dab3b5012c9663cb97a07af66fbe385f92c69a614a4d56bf85305ec3a": { "Name": "testdocker_db1_1", "EndpointID": "09e43aef8e14b0e876d47fabe67a3827dc4cea5d44b199113d9ab2678d8ce22a", "MacAddress": "02:42:ac:11:00:02", "IPv4Address": "172.17.0.2/16", "IPv6Address": "" } }, "Options": {} } ]
现在,文档还说,容器应该能够通过db1和db2到达对方,但事实并非如此:
root@9b8b885dab3b:/# mysql -h db2 -u root ERROR 2005 (HY000): Unknown MySQL server host 'db2' (111) root@9b8b885dab3b:/# mysql -h testdocker_db2_1 -u root ERROR 2005 (HY000): Unknown MySQL server host 'testdocker_db2_1' (111)
另外,除非我明确地将Google的DNS添加到/etc/resolv.conf ,否则这两个容器都不能访问互联网。
我很确定我在这里做错了什么,因为我找不到其他人提出的问题,但我无法弄清楚它是什么。
多谢你们!
编辑:
为了说明,容器可以通过IP地址相互ping通,但主机名不parsing。
这个问题在GitHub上报告过 。 目前build议的解决方法是完全禁用firewalld 。
我会尽快更新这个答案,find一个更好的解决scheme。
编辑#1:
拉取请求解决这个问题 (Fedora 23testing)。 这个PR已经与master合并,任何想从源码编译Docker的人都可以。
找不到预期的发布date,但我猜测它将在接下来的几周内作为补丁版本发布。 将再次更新这个答案与进一步的信息时可用。
编辑#2:
Docker的1.10.1 RC解决了这个问题。 我将把这个答案标记为接受这个话题。
- Docker Weave和WeaveDNS问题
- docker集装箱/ AWS EC2公共DNS拒绝连接
- 使用Virtual Box无法与Docker(Centos 7)+ DNS服务器(Container Ubuntu 14.04)通信
- 如何指定docker图像的DNS?
- 如何使用端口转发使用DNS名称连接到docker容器
- 解决链接的docker容器中的内部DNS
- 如何从docker-compose文件中覆盖/etc/resolv.conf中Docker的embedded式DNS服务器
- 转发域到docker集装箱
- 如何正确configurationVirtualBox的DNSconfiguration来parsing本地networking中的docker容器主机名?