如何使Docker Desktop Windows解析主机名?

时间:2019-03-26 14:58:38

标签: docker dns nameservers

假设我的机器名为 IP为10.11.12.13的工作站-mine.company.network

我无法从任何Docker Edge版本2.0.3.0容器(在后台使用Kubernetes)解析它,例如:

docker run -it --rm busybox
ping workstation-mine.company.network

失败,并显示“错误地址”消息,但是

ping workstation-somebody-else.company.network
ping www.google.com

工作正常,IP地址已解析。 我也可以ping通IP 10.11.12.13,尽管响应时间比ping通host.docker.internal的时间要长得多。

使用nslookup,我可以将公司网络中所有附近的工作站名称解析为IP,但我的除外:

nslookup workstation-mine.company.network
** server can't find workstation-mine.company.network: NXDOMAIN

nslookup 10.11.12.13
** server can't find 13.12.11.10.in-addr.arpa: NXDOMAIN

docker安装是在一个非常庞大的脚本中完成的,我只使用了它,并且不需要使用host.docker.internal,因为访问的目的地也可能是另一台机器。

有一种解决方法是,给我自己的计算机一个自定义名称,例如“ my-host”,然后将其编辑到Windows \ system32 \ drivers \ etc \ hosts文件中。然后容器中的ping my-host起作用。

顺便说一句,

我不知道它是否相关,但是我在ProgramData \ DockerDesktop \ Service.txt日志中不断收到DNS错误:

[14:31:31.414] [ApiProxy] [Info] time =“ 2019-03-26T14:31:31 + 01:00” msg =“未知的DNS查询类型13” [14:31:31.414][ApiProxy] [Info] time =“ 2019-03-26T14:31:31 + 01:00” msg =“ DNS失败:1160493135005290919.1659836570884043770。\ tIN \ t HINFO:未知查询类型”

[15:40:08.358] [ApiProxy] [Info] time =“ 2019-03-26T15:40:08 + 01:00” msg =“ DNS失败:docker-desktop。\ tIN \ t AAAA:errno 9002:DnsQuery:DNS服务器故障。”

第一个DNS错误似乎与名称服务器中某些异常的,列为已弃用的HINFO行类型有关,第二个是IP v6(AAAA表示IP v6)。

2 个答案:

答案 0 :(得分:0)

不幸的是,本地主机名解析似乎不适用于最新的Docker for Windows版本(到目前为止最多2.1.0.1)

我发现的唯一可能的解决方案是降级为Docker for Windows 2.0.0.3

提防:您需要卸载当前安装才能安装2.0.0.3版。这样您将丢失所有数据(容器,图像等)

Github上有一个由Stefan Großmann创建的相关问题:Cannot resolve host name in Docker Desktop Windows #3810

答案 1 :(得分:0)

我只是遇到了同样的问题。我可以通过以下方式ping 8.8.8.8:

docker run mcr.microsoft.com/dotnet/core/sdk:3.0-nanoserver-1803 ping 8.8.8.8

但不能ping google.com或任何域。

然后我尝试通过以下方式找到容器使用的虚拟网络:

docker run mcr.microsoft.com/dotnet/core/sdk:3.0-nanoserver-1803 ipconfig /all

然后我发现该网络使用了错误的接口,导致我当时无法连接,这导致我公司的VPN设置为错误的DNS。

最后,我在DNS Suffix中找到Registry Editor并删除包含该名称的整个文件夹,然后重新启动整个docker。 DNS再次起作用。

您可以在此处找到网络接口:

Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces

ipconfig /all