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

问题描述

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

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

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

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

所以基本上,我的问题是:如何将DNS条目添加到Windows容器的主机文件?

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

解决方法

您可以以管理员身份获取容器的命令外壳并运行命令:

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条目添加到容器的hosts文件中。要测试结果,您可以使用type c:\windows\system32\drivers\etc\hosts查看文件的内容,并使用curl mysite.local从该网站获取内容。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...