无法在Docker Windows容器中访问Internet

dgiusagp  于 2023-10-16  发布在  Docker
关注(0)|答案(6)|浏览(175)

我正在尝试使用DockerWindows容器构建镜像。这是我的dockerfile

FROM mcr.microsoft.com/windows/servercore:ltsc2019 as installer
RUN Invoke-WebRequest -URI 'www.google.com'

当我运行此程序时,它无法连接到google.com

Invoke-WebRequest : The remote name could not be resolved: 'www.google.com'
At line:1 char:73

我正在使用企业网络,我尝试使用RUN netsh winhttp set proxy proxy-server="http://proxy.com:80" bypass-list="*.xyz.com"设置代理,并导入注册表HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings
我的容器中的ipconfig /all给出了下面的结果

Windows IP Configuration

   Host Name . . . . . . . . . . . . : 0d5119fe9ce4
   Primary Dns Suffix  . . . . . . . :
   Node Type . . . . . . . . . . . . : Hybrid
   IP Routing Enabled. . . . . . . . : No
   WINS Proxy Enabled. . . . . . . . : No

Ethernet adapter Ethernet:

   Connection-specific DNS Suffix  . :
   Description . . . . . . . . . . . : Microsoft Hyper-V Network Adapter
   Physical Address. . . . . . . . . : 00-15-5D-B4-55-54
   DHCP Enabled. . . . . . . . . . . : Yes
   Autoconfiguration Enabled . . . . : Yes
   Link-local IPv6 Address . . . . . : fd80::a1f4:ab74:983:af83%4(Preferred)
   IPv4 Address. . . . . . . . . . . : 172.xxx.xxx.xx(Preferred)
   Subnet Mask . . . . . . . . . . . : 255.xxx.xxx.xx
   Default Gateway . . . . . . . . . : 172.xxx.xxx.xx
   DHCPv6 IAID . . . . . . . . . . . : 67114333
   DHCPv6 Client DUID. . . . . . . . : 00-01-40-01-25-D1-CB-C4-00-15-5D-D4-A5-54
   DNS Servers . . . . . . . . . . . : 172.xxx.xxx.xx
                                       10.xxx.xxx.xx
   NetBIOS over Tcpip. . . . . . . . : Disabled

我怀疑有一些dns/防火墙问题或没有设置代理以正确的方式。有人能帮我找出根本原因并解决这个问题吗?

fhg3lkii

fhg3lkii1#

我也遇到了同样的问题,并能够解决它设置DNS。
如果你在构建时调用,你可以在你的docker守护进程中设置它。在Docker Desktop中,转到“Settings”>“Docker Engine”并将以下内容添加到JSON配置中:

"dns": ["1.1.1.1"]

https://docs.docker.com/engine/reference/commandline/dockerd/#daemon-dns-options
如果您在运行时遇到问题,您可以添加dns参数

--dns 1.1.1.1

https://docs.docker.com/engine/reference/run/#network-settings

ctehm74n

ctehm74n2#

可以使用“网络”命令作为解决方法。适用于buildrun

docker build --network="Default Switch" .

docker run --rm -it --network="Default Switch" mcr.microsoft.com/windows/servercore:ltsc2019

名字是从这里开始的:

docker network ls
NETWORK ID     NAME             DRIVER    SCOPE
79b90200b5ad   Default Switch   ics       local
07ffb031d4b7   nat              nat       local
6682d6220de5   none             null      local

由于某种原因,docker default(nat)没有互联网连接。

ggazkfy8

ggazkfy83#

最后在这里找到了一个简单的答案https://github.com/docker/for-win/issues/2760#issuecomment-430889666
基本上需要将您的互联网连接设置为最高优先级:
1.查找您的互联网接口,例如。'Wi-Fi' Get-NetIPInterface -AddressFamily IPv4 | Sort-Object -Property InterfaceMetric -Descending
1.通过将其设置为最低值Set-NetIPInterface -InterfaceAlias 'Wi-Fi' -InterfaceMetric 1使其成为最高优先级

mwg9r5ms

mwg9r5ms4#

我也遇到了类似的问题,这是因为我连接到VPN,但没有在Cisco AnyConnect中启用“使用VPN时允许本地(LAN)访问(如果已配置)”设置。以防万一其他人也在为类似的问题而挣扎。

8tntrjer

8tntrjer5#

在Docker Desktop中,转到“设置”>“Docker引擎”,并将下面一行添加到

JSON config:
"dns":[8.8.8.8]
It looks like this:
{
  "dns": [
    "8.8.8.8"
  ],
  "experimental": false
}

应用并重新启动。一旦重新启动,转到任何正在运行的容器并执行“ping google.com“,它应该可以工作。谢谢

bogh5gae

bogh5gae6#

我也有同样的问题。对我有效的是创建一个新的网络:

docker network create --driver nat my-new-network

然后我在docker build命令中使用了新的网络:

docker build --network=my-new-network .

相关问题