【问题标题】:How can I add DNS entries to hosts file of a Windows Container?如何将 DNS 条目添加到 Windows 容器的主机文件?
【发布时间】:2020-12-31 22:20:24
【问题描述】:

我在主机的 IIS 中有一个网站,可通过http://mysite.local 地址访问。我还有一个在此主机上运行的 windows 容器,我正在尝试使用“curl http://mysite.local”从我的 windows 容器连接到该网站。

我将在容器的 hosts 文件中添加正确的 DNS 条目。为此,我连接到容器的命令外壳并运行以下命令:

echo 192.168.0.144 mysite.local >> c:\windows\system32\drivers\etc

但控制台显示“访问被拒绝。

所以基本上,我的问题是:

  • 如何将 DNS 条目添加到 Windows 容器的 hosts 文件中?

我正在使用Docker Desktop version 2.3.0.4(46911),在Windows 10 上有Engine version 19.03.12
我已经使用mcr.microsoft.com/windows/servercore:ltsc2019 作为 Windows 基础映像创建了容器,还尝试了nanoserver:1903

【问题讨论】:

  • 您能否设置本地 DNS 服务器(如 Linux 服务器上的 dnsmasq 或 BIND),或使用云托管的 DNS 服务,如 Amazon 的 Route 53?这比手动复制主机文件条目要容易得多。
  • 使用本地 DNS 服务器可能是一种选择,但是,开发环境是 Windows 10,它没有内置的 DNS 服务器,我不想依赖额外的第三方工具作为一个依赖。也不能使用真正的云 DNS 服务器,因为它只是开发环境。我希望 --add-host 选项可以解决问题,但显然 it's not working 目前适用于 Windows 容器。

标签: docker dns hosts docker-desktop windows-container


【解决方案1】:

你可以以管理员身份获取容器的命令shell并运行命令:

docker exec --user "NT AUTHORITY\SYSTEM" -it yourcontainername cmd

然后你可以在容器的hosts文件中添加适当的记录:

echo X.X.X.X mysite.local >> c:\windows\system32\drivers\etc\hosts

为确保您使用的是正确的值而不是 X.X.X.X,请打开主机的 hosts 文件,您将看到类似 X.X.X.X host.docker.internal 的 DNS 条目。从容器的角度来看,这是主机的 IP。在上述命令中使用该 IP 将正确的 DNS 条目添加到容器的主机文件中。要测试结果,您可以使用type c:\windows\system32\drivers\etc\hosts 查看文件的内容,并使用curl mysite.local 从该网站获取内容。

【讨论】:

    猜你喜欢
    • 2020-04-20
    • 2011-04-09
    • 2017-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-24
    • 1970-01-01
    相关资源
    最近更新 更多