无法从容器内连接到Chocolatey.org或任何其他互联网站点


12

来自https://forums.docker.com/t/cannot-connect-to-chocolatey-org/38745的 xpost

预期行为

我正在运行Windows Server 2016数据中心(MSDN下载)64位-版本1607-内部版本14393.1715

我正在使用Docker For Windows并正在运行Windows容器。

我认为这是世界上最简单的事情:

reboot my host machine
docker run -it microsoft/windowsservercore
powershell
iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'));

期望将其安装在容器中。

实际上,我将在dockerfile中执行此操作,但是我将以最小的工作示例为例,以立即获取帮助。

这是一个实际的失败的docker文件(可悲的是,它并不是那么有创意)

FROM microsoft/windowsservercore

SHELL ["Powershell"]

ENV ChocolateyUseWindowsCompression false;
RUN iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'));

实际行为

首先,我要在Virtualbox VM中运行它。我要工作的所有其他内容都可以正常工作,包括但不限于:内部网络连接和测试,运行的sql服务器,在我的docker-compose环境中运行的WCF服务,数据正确返回。我希望系统执行的所有操作均正常。这是最后一步,但愿:D。我在VirtualBox中运行它的事实无关紧要,因为Hyper-V可以正常工作,并且我所有的机器都可以正常工作。我只是觉得值得一提。

docker run -it microsoft/windowsservercore
powershell
PS C:\> iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))
Exception calling "DownloadString" with "1" argument(s): "The remote name could not be resolved: 'chocolatey.org'"
At line:1 char:1
+ iex ((new-object net.webclient).DownloadString('https://chocolatey.or ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [], MethodInvocationException
    + FullyQualifiedErrorId : WebException

PS C:\> ipconfig /all

Windows IP Configuration

   Host Name . . . . . . . . . . . . : 339189e8dd56
   Primary Dns Suffix  . . . . . . . :
   Node Type . . . . . . . . . . . . : Hybrid
   IP Routing Enabled. . . . . . . . : No
   WINS Proxy Enabled. . . . . . . . : No
   DNS Suffix Search List. . . . . . : attlocal.net

Ethernet adapter vEthernet (Container NIC 6412b757):

   Connection-specific DNS Suffix  . : attlocal.net
   Description . . . . . . . . . . . : Hyper-V Virtual Ethernet Adapter #4
   Physical Address. . . . . . . . . : 00-15-5D-80-E9-2C
   DHCP Enabled. . . . . . . . . . . : No
   Autoconfiguration Enabled . . . . : Yes
   Link-local IPv6 Address . . . . . : fe80::a51b:820e:e45d:fab6%29(Preferred)
   IPv4 Address. . . . . . . . . . . : 172.22.202.147(Preferred)
   Subnet Mask . . . . . . . . . . . : 255.255.240.0
   Default Gateway . . . . . . . . . : 172.22.192.1
   DNS Servers . . . . . . . . . . . : 172.22.192.1
                                       10.0.2.2
   NetBIOS over Tcpip. . . . . . . . : Disabled

在我的主机操作系统(服务器2016)中,我具有以下信息:

PS C:\docker> ipconfig /all

Windows IP Configuration

   Host Name . . . . . . . . . . . . : WIN-CDPNLUMSTOE
   Primary Dns Suffix  . . . . . . . :
   Node Type . . . . . . . . . . . . : Hybrid
   IP Routing Enabled. . . . . . . . : No
   WINS Proxy Enabled. . . . . . . . : No
   DNS Suffix Search List. . . . . . : attlocal.net

Ethernet adapter vEthernet (HNS Internal NIC) 2:

   Connection-specific DNS Suffix  . :
   Description . . . . . . . . . . . : Hyper-V Virtual Ethernet Adapter #2
   Physical Address. . . . . . . . . : 00-15-5D-80-E5-17
   DHCP Enabled. . . . . . . . . . . : Yes
   Autoconfiguration Enabled . . . . : Yes
   Link-local IPv6 Address . . . . . : fe80::5939:52e7:aaf3:5b70%9(Preferred)
   IPv4 Address. . . . . . . . . . . : 172.22.192.1(Preferred)
   Subnet Mask . . . . . . . . . . . : 255.255.240.0
   Default Gateway . . . . . . . . . :
   DHCPv6 IAID . . . . . . . . . . . : 301995357
   DHCPv6 Client DUID. . . . . . . . : 00-01-00-01-21-4E-0C-48-08-00-27-51-5F-6A
   DNS Servers . . . . . . . . . . . : fec0:0:0:ffff::1%1
                                       fec0:0:0:ffff::2%1
                                       fec0:0:0:ffff::3%1
   NetBIOS over Tcpip. . . . . . . . : Enabled

Ethernet adapter vEthernet (HNS Internal NIC) 3:

   Connection-specific DNS Suffix  . :
   Description . . . . . . . . . . . : Hyper-V Virtual Ethernet Adapter #3
   Physical Address. . . . . . . . . : 00-15-5D-B6-45-8D
   DHCP Enabled. . . . . . . . . . . : Yes
   Autoconfiguration Enabled . . . . : Yes
   Link-local IPv6 Address . . . . . : fe80::1de4:bff7:36fb:ee92%13(Preferred)
   IPv4 Address. . . . . . . . . . . : 172.23.128.1(Preferred)
   Subnet Mask . . . . . . . . . . . : 255.255.240.0
   Default Gateway . . . . . . . . . :
   DHCPv6 IAID . . . . . . . . . . . : 570430813
   DHCPv6 Client DUID. . . . . . . . : 00-01-00-01-21-4E-0C-48-08-00-27-51-5F-6A
   DNS Servers . . . . . . . . . . . : fec0:0:0:ffff::1%1
                                       fec0:0:0:ffff::2%1
                                       fec0:0:0:ffff::3%1
   NetBIOS over Tcpip. . . . . . . . : Enabled

Ethernet adapter Ethernet:

   Connection-specific DNS Suffix  . : attlocal.net
   Description . . . . . . . . . . . : Intel(R) PRO/1000 MT Desktop Adapter
   Physical Address. . . . . . . . . : 08-00-27-51-5F-6A
   DHCP Enabled. . . . . . . . . . . : Yes
   Autoconfiguration Enabled . . . . : Yes
   Link-local IPv6 Address . . . . . : fe80::10de:923b:b866:221d%4(Preferred)
   IPv4 Address. . . . . . . . . . . : 10.0.2.15(Preferred)
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   Lease Obtained. . . . . . . . . . : Friday, August 19, 1881 6:47:42 PM
   Lease Expires . . . . . . . . . . : Tuesday, September 26, 2017 11:15:59 PM
   Default Gateway . . . . . . . . . : 10.0.2.2
   DHCP Server . . . . . . . . . . . : 10.0.2.2
   DHCPv6 IAID . . . . . . . . . . . : 50855975
   DHCPv6 Client DUID. . . . . . . . : 00-01-00-01-21-4E-0C-48-08-00-27-51-5F-6A
   DNS Servers . . . . . . . . . . . : 10.0.2.2
   NetBIOS over Tcpip. . . . . . . . : Enabled

Tunnel adapter isatap.{C420BD56-5715-49BF-9382-5EA99AA48563}:

   Media State . . . . . . . . . . . : Media disconnected
   Connection-specific DNS Suffix  . :
   Description . . . . . . . . . . . : Microsoft ISATAP Adapter #5
   Physical Address. . . . . . . . . : 00-00-00-00-00-00-00-E0
   DHCP Enabled. . . . . . . . . . . : No
   Autoconfiguration Enabled . . . . : Yes

Tunnel adapter isatap.{70EA4F39-FE0F-4040-B718-ACAC00765808}:

   Media State . . . . . . . . . . . : Media disconnected
   Connection-specific DNS Suffix  . :
   Description . . . . . . . . . . . : Microsoft ISATAP Adapter #6
   Physical Address. . . . . . . . . : 00-00-00-00-00-00-00-E0
   DHCP Enabled. . . . . . . . . . . : No
   Autoconfiguration Enabled . . . . : Yes

Tunnel adapter isatap.attlocal.net:

   Media State . . . . . . . . . . . : Media disconnected
   Connection-specific DNS Suffix  . : attlocal.net
   Description . . . . . . . . . . . : Microsoft ISATAP Adapter #7
   Physical Address. . . . . . . . . : 00-00-00-00-00-00-00-E0
   DHCP Enabled. . . . . . . . . . . : No
   Autoconfiguration Enabled . . . . : Yes
PS C:\docker>

信息

DockerDebugInfo.ps1输出:https ://gist.github.com/jcolebrand/170673e45bf8a659552f22f2071c30d6

系统信息

运行Windows Server数据中心(MSDN下载)64位-版本1607-内部版本14393.1715

PS C:\docker> docker version
Client:
 Version:      17.06.2-ce
 API version:  1.30
 Go version:   go1.8.3
 Git commit:   cec0b72
 Built:        Tue Sep  5 19:57:19 2017
 OS/Arch:      windows/amd64

Server:
 Version:      17.06.2-ce
 API version:  1.30 (minimum version 1.24)
 Go version:   go1.8.3
 Git commit:   cec0b72
 Built:        Tue Sep  5 19:59:47 2017
 OS/Arch:      windows/amd64
 Experimental: true

如果出于任何被遗忘的原因这很重要,则确实需要激活主机操作系统。我是在一个一次性开发环境中进行此操作的,因此,现在还不必特别担心激活VM。我无法理解这是多么重要。尤其是因为其他一切“都行得通”。


似乎这里发布了类似的问题github.com/docker/for-win/issues/427尝试停止并启动docker服务。
PrestonM

1
感谢@PrestonM我做了很多次。并重新启动计算机。而get-netnat |删除-netnat
jcolebrand

运行Stop-Service docker; Get-ContainerNetwork | Remove-ContainerNetwork -Force; Start-Service docker提出了几个问题。找不到名称为docker的服务。使用Get-ContainerNetwork未找到容器网络
jcolebrand

您从哪里运行命令?Virtualbox还是Windows Server?
PrestonM

1
@PrestonM有点困惑。让我来回顾一下我的设置:OSX主机-> VirtualBox-> Windows Server 2016-> Docker for Windows->容器。堆栈都在Hyper-V层上运行,并且我可以对容器执行其他所有操作,包括应用程序与本地数据库实例(microsoft / mssql-server-windows-developer)之间的内部网络通信,因此我想要的一切做的很好。这些命令以Powershell术语在容器上发出。Server2016可以访问互联网。
jcolebrand

Answers:


5

问题似乎是Windows映像将DNS配置为首先是NAT接口的默认网关,然后是主机的DNS。DNS查找针对该第一个解析器和外部访问失败。

--dns 8.8.8.8CLI 添加(或本地解析器)似乎可以解决此问题。


棒极了。谁可以将其保留在待定清单上以进行解决?:D
jcolebrand

@jcolebrand嗨,我也面临着同样的问题。我有企业代理配置。我们需要在哪里添加该dns配置?在daemon.json中?
user2301

您是否按照此答案中的指示尝试了命令?
jcolebrand '18年

@jcolebrand尝试docker build --dns 8.8.8.8 -t choco .不起作用。然后我"dns": ["8.8.8.8"]在daemon.json中添加了行不通的功能。
user2301

1
我以为dns标志不在运行中?
jcolebrand '18

2

由于评论是暂时的,因此以下是一些试图解决此问题的人的信息。请随时编辑此答案以提供更多详细信息,除非您是适用于Windows的Docker专业版,在这种情况下,请给出更好的答案:D

在将我的VM上的NIC更改为桥接并添加雷电适配器之后,我为IT组演示了该问题。由于存在安全系统,因此我意识到我需要将安全软件添加到我的VM中,但是由于它没有加入域,因此这是一个问题。将其切换回wifi适配器上的NAT,然后以某种方式神奇地演示我的Windows 2016 VM中的问题,使其开始工作。

相同的网络。相同的VM配置。相同的软件和主机,没有任何可跟踪的更改。

检查了Get-ContainerNetwork或Get-WinNat却什么也没显示,我真的已经走到了诊断的尽头。更改该NIC适配器然后再将其更改回显然导致重置。美好的时光。

因此,我没有一个可靠的答案,但是对于遇到麻烦的下一个人,我有一个很好的解决方法,考虑到我对StackExchange问​​题和答案的跟踪记录,我将是我。但我希望它也能帮到您,随机的互联网提问者。


还有XKCD税,用于那些无法解决的问题。

XKCD漫画链接到“古代人的智慧”


1
根据此描述,我很想将帐单放在通过关闭/不关闭网络堆栈清除的DNS缓存上,因为Windows也有这种想法来缓存否定请求。如果再次发生,可能值得尝试ipconfig /flushdns在Windows主机上
Tensibai '17

想要添加的是,如果您的意思是托管所有内容的基本OS,则本例中的主机是OSX。如果您是说我在运行Docker容器的地方,那就是Windows。
jcolebrand '18

我的意思是Windows主机,我不记得基于* nix的网络堆栈缓存否定查询
Tensibai'1

1

在命令提示符下运行,ipconfig /allDNS Servers在输出中查找看起来像IP地址的一行。那是您的主机的DNS服务器。

编辑C:\ProgramData\Docker\config\daemon.json并添加dns具有该IP地址的条目。例如,如果您的DNS服务器是192.10.0.2,而8.8.8.8是Google的DNS作为备份:

{
    "dns": ["192.10.0.2", "8.8.8.8"]
}

现在重新启动Docker Desktop,远程URL可以由Docker在构建或运行时解析。

此解决方案来自Faithful Anere,网址https://medium.com/@faithfulanere/solved-docker-build-could-not-resolve-archive-ubuntu-com-apt-get-fails-to-install-anything-9ea4dfdcdcf2


-1

尝试从https://chocolatey.org/install#completely-offline-install(“在代理后面安装”部分)进行安装说明:

    @powershell -NoProfile -ExecutionPolicy Bypass -Command "[System.Net.WebRequest]::DefaultWebProxy.Credentials = [System.Net.CredentialCache]::DefaultCredentials; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin

1
您在这里回答的是一个不同的问题,问题是为什么容器无法解析互联网地址
Tensibai
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.