【发布时间】:2020-10-08 23:57:48
【问题描述】:
环境设置:
OS: CentOS Linux release 8.2.2004 (Core)
Docker Version:
Client: Docker Engine - Community
Version: 19.03.11
API version: 1.40
Go version: go1.13.10
Git commit: 42e35e61f3
Built: Mon Jun 1 09:13:48 2020
OS/Arch: linux/amd64
Experimental: false
Server: Docker Engine - Community
Engine:
Version: 19.03.11
API version: 1.40 (minimum version 1.12)
Go version: go1.13.10
Git commit: 42e35e61f3
Built: Mon Jun 1 09:12:26 2020
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.2.6
GitCommit: 894b81a4b802e4eb2a91d1ce216b8817763c29fb
runc:
Version: 1.0.0-rc8
GitCommit: 425e105d5a03fabd737a126ad93d62a9eeede87f
docker-init:
Version: 0.18.0
GitCommit: fec3683
Linux 机器连接到防火墙后的公司网络。以下是详细信息:
-
/etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 -
/etc/resolv.conf
# Generated by NetworkManager search subdomain.domain.com nameserver 13.108.0.11 nameserver 13.108.11.16 -
创建用户自定义桥接网络:
$ docker network create mynetwork $ docker network ls NETWORK ID NAME DRIVER SCOPE 05400c341d1d bridge bridge local fb4e364ad31b host host local 835f9d99e610 none null local 7d8fc26d3632 mynetwork bridge local -
在 mynetwork 上创建了两个容器:
$ docker container run --name search1 --network mynetwork --network-alias search --detach elasticsearch:2和
$ docker container run --name search2 --network mynetwork --network-alias search --detach elasticsearch:2 -
DNS 循环检查:
$ docker container run --rm -it --network mynetowrk alpine nslookup search输出:
Server: 127.0.0.11 Address: 127.0.0.11:53 ** server can't find search.subdomain.domain.com: NXDOMAIN ** server can't find search.subdomain.domain.com: NXDOMAIN -
容器 /etc/resolv.conf
$ docker container run --rm -it --network mynetwork alpine cat /etc/resolv.conf输出:
search subdomain.domain.com nameserver 127.0.0.11 options ndots:0 -
Docker 用户定义的网络详细信息:
$ docker network inspect -v mynetwork
输出:
[ { "Name": "mynetwork", "Id": "7d8fc26d36323cf9ba47dbb272bf4ad15113d6b26a26fbf6c82cc1d866b480c0", "Created": "2020-06-18T09:54:12.37673638+05:30", "Scope": "local", "Driver": "bridge", "EnableIPv6": false, "IPAM": { "Driver": "default", "Options": {}, "Config": [ { "Subnet": "172.19.0.0/16", "Gateway": "172.19.0.1" } ] }, "Internal": false, "Attachable": true, "Ingress": false, "ConfigFrom": { "Network": "" }, "ConfigOnly": false, "Containers": { "ec1cacb437926b5c6bb5693ab9c0afa6f8bc2764d5e15a5e15d9d5709346c1e5": { "Name": "search1", "EndpointID": "2c7420176adbce496e4c033416d98c290cf74dcc1e68568d7160b45cefd8d1db", "MacAddress": "02:42:ac:13:00:02", "IPv4Address": "172.19.0.2/16", "IPv6Address": "" }, "f7cf532aa71df9cefaf5575ff27d4a2f4525f7674a479989d5b96f281282b6db": { "Name": "search2", "EndpointID": "d641f94dfc1d898d7d8ec667b4389d4ff6a0d53be3454a89f77b24b0bd04a663", "MacAddress": "02:42:ac:13:00:03", "IPv4Address": "172.19.0.3/16", "IPv6Address": "" } }, "Options": {}, "Labels": {} } ]
问题:
- 为什么 docker 在用户定义的 docker 网络中使用主机搜索域?
- 为什么网络别名不可解析?
- 是不是和CentOS 8.2版本有关?
- 如何解决?或如何使其工作?
谢谢
【问题讨论】:
-
如果您使用 Debian 而不是 Alpine 作为 nslookup 容器,它是否有效。命令中还有几个拼写错误,并且两者中的容器名称相同,网络拼写错误,缺少空格。这只是在问题中,您运行的命令中是否有拼写错误?请同时提供
docker network inspect -v mynetwork输出。 -
在 Debian 上:服务器:127.0.0.11 地址:127.0.0.11#53 非权威答案:*** 找不到搜索:无答案
-
我在问题中附上了
docker network inspect -v mynetwork的输出。 -
我检查了我的机器。重新格式化两次相同的错误。 Ping 命令给出:
ping: bad address 'search' -
我认为您面临@Amarjeet Sharma 的 DNS 问题是由于以下原因 - phoenixnap.com/kb/how-to-install-docker-on-centos-8。你的问题解决了吗?即使在禁用 firewalld 后,我在 CentOS 8 上也面临类似的 DNS 解析问题