Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker 如何将DNS条目添加到Windows容器的主机文件?_Docker_Dns_Hosts_Docker Desktop_Windows Container - Fatal编程技术网

Docker 如何将DNS条目添加到Windows容器的主机文件?

Docker 如何将DNS条目添加到Windows容器的主机文件?,docker,dns,hosts,docker-desktop,windows-container,Docker,Dns,Hosts,Docker Desktop,Windows Container,我在我的主机的IIS中有一个可以通过地址访问的网站。我还有一个windows容器在这个主机上运行,我正试图通过使用“curl”从我的windows容器连接到那个网站http://mysite.local“ 我将把正确的DNS条目添加到容器的hosts文件中。为此,我连接到容器的命令shell并运行以下命令: echo 192.168.0.144 mysite.local >> c:\windows\system32\drivers\etc 但控制台显示“访问被拒绝” 所以基本上,我

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

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

echo 192.168.0.144 mysite.local >> c:\windows\system32\drivers\etc
但控制台显示“访问被拒绝”

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

  • 如何将DNS条目添加到Windows容器的主机文件
我使用的是
Docker桌面版本2.3.0.4(46911)
,在
windows10上有
Engine版本19.03.12

我已经使用
mcr.microsoft.com/windows/servercore:ltsc2019
作为windows基本映像创建了容器,还尝试了
nanoserver:1903

您可以作为管理员获取容器的命令外壳并运行以下命令:

docker exec --user "NT AUTHORITY\SYSTEM" -it yourcontainername cmd
然后,您可以将适当的记录添加到容器的主机文件:

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

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

从该网站获取内容。您可以以管理员身份获取容器的命令外壳并运行以下命令:

docker exec --user "NT AUTHORITY\SYSTEM" -it yourcontainername cmd
然后,您可以将适当的记录添加到容器的主机文件:

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

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

您可以设置本地DNS服务器(如Linux服务器上的dnsmasq或BIND),或使用云托管DNS服务(如Amazon的Route 53)吗?这比手动复制主机文件条目容易得多。使用本地DNS服务器可能是一种选择,但是,开发环境是Windows 10,它没有内置DNS服务器,我不希望依赖额外的第三方工具。另外,使用真正的云DNS服务器也不是一个选项,因为它只是一个开发环境。我希望添加主机选项能起到作用,但目前显然是针对windows容器。您可以设置本地DNS服务器(如dnsmasq或Linux服务器上的BIND),或使用云托管DNS服务(如Amazon的Route 53)吗?这比手动复制主机文件条目容易得多。使用本地DNS服务器可能是一种选择,但是,开发环境是Windows 10,它没有内置DNS服务器,我不希望依赖额外的第三方工具。另外,使用真正的云DNS服务器也不是一个选项,因为它只是一个开发环境。我希望添加主机选项能起到作用,但目前显然是针对windows容器的。