假设我的机器名为 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)。
答案 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