使用新的1.10 DNS SD

时间:2016-02-05 10:30:40

标签: docker dns docker-compose

我一直在尝试使用最新的RC码头作为码头工作者并撰写了几天,最后,今天,新的稳定版本(分别为1.10和1.6)。

到目前为止,1.9中添加的新网络功能一直很棒。但是自从我升级到1.10rc1(到目前为止每个RC和稳定版),同一用户定义网络中的容器再也找不到了。事实上,他们现在甚至无法到达外面的世界。

一个简单的例子,文件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

这会创建两个带有官方图像的MySQL容器。根据撰写文档,应创建一个新的 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通,但主机名未解析。

1 个答案:

答案 0 :(得分:4)

This issue was reported on GitHub。目前建议的解决方法是完全禁用firewalld

我会在找到一个问题后立即更新此答案以更好地解决此问题。

编辑#1:

Pull request solving this issue(针对Fedora 23测试)。对于想要从源代码编译Docker的人来说,这个PR已经与master合并。

无法找到预期的发布日期,但我猜测它将在未来几周内作为补丁版本发布。如果有更多信息,将再次更新此答案。

编辑#2:

Docker's 1.10.1 RC解决了这个问题。我将此答案标记为仅接受此主题。