【问题标题】:Docker Container not use host DNSDocker 容器不使用主机 DNS
【发布时间】:2019-04-10 14:16:47
【问题描述】:

我使用了名为“backend-network”的自定义 docker 网络

[root@localhost docker]# docker inspect backend-network
    {
        "Name": "backend-network",
        "Id": "18180c0c1ef14460a25b66b7fb971e090f7bb85f549921704d11937af70766c7",
        "Created": "2018-08-07T12:36:02.4175991+09:00",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": {},
            "Config": [
                {
                    "Subnet": "172.18.0.0/16",
                    "Gateway": "172.18.0.1"
                }
            ]
        },
        "Internal": false,
        "Attachable": false,
        "Containers": {
            "531c1ecbe993ee13e632fbd9697b392ee989d756ff60c07eae96a700901aaa01": {
                "Name": "splash",
                "EndpointID": "c9e4e7ec319ecf9cdcbb9ca50170efb63c4fca33bcbbabb584c4a4e41576b15d",
                "MacAddress": "02:42:ac:12:00:05",
                "IPv4Address": "172.18.0.5/16",
                "IPv6Address": ""
            },
            "c6a5aa827e901b6b6d7b35d4a8be5a5b2fc73f1a7a385416ce200e847d400b21": {
                "Name": "flask",
                "EndpointID": "5d5abb3bc964d251379a7f6a84cb5b5d9bddac9b778f2222d52aba657b28dd34",
                "MacAddress": "02:42:ac:12:00:02",
                "IPv4Address": "172.18.0.2/16",
                "IPv6Address": ""
            },
            "da839143fb58d738e38922c669efa332c545fee4dd0a5b733583ed7b8df60875": {
                "Name": "django",
                "EndpointID": "f046e9cc93f895b12ce1c4de983fbe0e54a3904460c04db3ba238ba84ba82327",
                "MacAddress": "02:42:ac:12:00:03",
                "IPv4Address": "172.18.0.3/16",
                "IPv6Address": ""
            },
            "fc9e6ef183c81a3fe7dd29ecb5c17c0dc27fb803ef8e214d4f344a2b3407ec54": {
                "Name": "mongo",
                "EndpointID": "ab94182f4b175f105ab01ccbbc43b7dad37cf5506eee831168fd5bd9094ccde8",
                "MacAddress": "02:42:ac:12:00:04",
                "IPv4Address": "172.18.0.4/16",
                "IPv6Address": ""
            }
        },
        "Options": {},
        "Labels": {}
    }

但是每个Container都没有使用主机DNS。

主机 DNS 是。

[root@localhost docker]# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 192.168.88.1

容器 DNS 是

(django) root@da839143fb58:/opt/django_backend/scrapy_app# cat /etc/resolv.conf
nameserver 127.0.0.11
options ndots:0

我加了

域名服务器 192.168.88.1

容器的resolv.conf,它可以工作,但请求太长。

我想先搜索

域名服务器 127.0.0.11

搜索

域名服务器 192.168.88.1

如何设置 docker-network 来托管 dns?

删除

域名服务器 127.0.0.11

然后不要通过名称与其他容器通信。喜欢

 (django) root@da839143fb58:/opt/django_backend/scrapy_app# ping splash
 ping: splash: Name or service not known

【问题讨论】:

    标签: docker dns


    【解决方案1】:

    Docker 容器通过嵌入式 DNS 服务器解析 DNS 请求(这是您在容器的 /etc/resolv.conf 中看到的 IP - 请参阅 documentation 中的底部注释)。根据您的配置,嵌入式 DNS 服务器将查询转发到您的主机(默认)或另一个 DNS 服务器。您可以使用 --dns- 标志传递自定义 DNS 服务器。

    请在documentation找到更多信息。

    【讨论】:

    • "在没有 --dns=IP_ADDRESS...、--dns-search=DOMAIN... 或 --dns-opt=OPTION... 选项的情况下,Docker 使用主机的 /etc/resolv.conf(docker 守护程序运行的地方)”在文档中。为什么不使用主机 /etc/resolv.conf(我的情况)?我没有为容器设置 dns 选项
    • 当您使用自定义网络时,解析是通过 docker 守护进程完成的。这些请求实际上被转发到您主机的resolv.conf 中配置的DNS 服务器。但是通过单个 DNS 服务器(docker 的嵌入式服务器)。
    • 您可以在这个相关问题中找到更多信息 (stackoverflow.com/questions/40483053/docker-dns-settings?rq=1)
    • 当我使用 --dns 192.168.88.1 时也无法正常工作。但更改 8.8.8.8 然后工作.. 我现在不明白为什么容器不能使用主机 dns。
    猜你喜欢
    • 2014-08-21
    • 2017-06-02
    • 1970-01-01
    • 1970-01-01
    • 2015-05-29
    • 2018-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多