Innerhalb des Containers kann keine Verbindung zuocolatey.org oder einer anderen Internetseite hergestellt werden

11

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

Erwartetes Verhalten

Ich verwende Windows Server 2016 Datacenter (MSDN-Download) 64-Bit - Version 1607 - Build 14393.1715

Ich verwende Docker für Windows und führe Windows-Container aus.

Ich denke, das ist die einfachste Sache der Welt, dies zu tun:

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

Es wird erwartet, dass dies schokoladig in den Behälter eingebaut wird.

Ich werde dies tatsächlich in einer Docker-Datei tun, aber ich werde ein minimales Arbeitsbeispiel verwenden, um jetzt Hilfe zu erhalten.

Hier ist eine aktuelle Docker-Datei, die fehlschlägt (leider nicht so kreativ)

FROM microsoft/windowsservercore

SHELL ["Powershell"]

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

Tatsächliches Verhalten

Das Wichtigste zuerst: Ich führe dies in einer Virtualbox-VM aus. Alles andere, was ich arbeiten möchte, funktioniert, einschließlich, aber nicht beschränkt auf: interne Netzwerkkonnektivität und -tests, SQL Server-Ausführung, WCF-Dienste, die in meiner Docker-Compose-Umgebung ausgeführt werden, Daten, die korrekt zurückgegeben werden. Alle Dinge, die ich vom System erwarte, funktionieren. Dies ist der letzte Schritt, Daumen drücken: D. Die Tatsache, dass ich dies in VirtualBox ausführe, sollte keine Rolle spielen, da Hyper-V funktioniert und alle meine Computer wie erwartet funktionieren. Ich denke nur, dass es erwähnenswert ist.

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

Von meinem Host-Betriebssystem (Server 2016) habe ich folgende Informationen:

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>

Information

DockerDebugInfo.ps1-Ausgabe: https://gist.github.com/jcolebrand/170673e45bf8a659552f22f2071c30d6

System Information

Ausführen des Windows Server-Datencenters (MSDN-Download) 64-Bit - Version 1607 - Build 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

Wenn dies aus irgendeinem Grund wichtig ist, muss das Host-Betriebssystem aktiviert werden. Ich mache dies in einer One-Shot-Entwicklungsumgebung und war daher noch nicht besonders besorgt über die Aktivierung der VM. Ich kann mir nicht vorstellen, wie wichtig das ist. Zumal alles andere "einfach funktioniert".

jcolebrand
quelle
Anscheinend gibt es hier ein ähnliches Problem. Github.com/docker/for-win/issues/427 Versuchen Sie, den Docker-Dienst zu stoppen und zu starten.
PrestonM
1
Danke @PrestonM Das habe ich schon oft gemacht. Und den Computer neu gestartet. Und get-netnat | remove-netnat
jcolebrand
Laufen Stop-Service docker; Get-ContainerNetwork | Remove-ContainerNetwork -Force; Start-Service dockerwirft ein paar Probleme auf. Kein Dienst mit Name Docker gefunden. Mit Get-ContainerNetwork
jcolebrand wurden
Woher führen Sie den Befehl aus? Virtualbox oder Windows Server?
PrestonM
1
@ PrestonM Ein wenig verwirrt. Lassen Sie mich mein Setup zusammenfassen: OSX Host -> VirtualBox -> Windows Server 2016 -> Docker für Windows -> Container. Der Stack läuft alle auf Hyper-V-Ebenen, und ich kann alles andere tun, was ich auf meinen Containern verlange, einschließlich der internen Netzwerkkommunikation zwischen Apps und einer lokalen Datenbankinstanz (Microsoft / MSSQL-Server-Windows-Entwickler), also alles, was ich will zu tun ist in Ordnung. Die Befehle werden in einem Powershell-Begriff für den Container ausgegeben. Der Server2016 kann das Internet problemlos erreichen.
Jcolebrand

Antworten:

5

Das Problem scheint zu sein, dass die Windows-Images DNS so konfigurieren, dass es zuerst das Standardgateway der NAT-Schnittstelle und dann das DNS des Hostcomputers ist. DNS-Lookups schlagen für diesen ersten Resolver und externen Zugriff fehl.

Das Hinzufügen --dns 8.8.8.8(oder Ihres lokalen Resolvers) zur CLI scheint das Problem zu umgehen.

Steven Murawski
quelle
Das ist großartig. Wer kann dies auf einen Rückstand zur Lösung bringen? : D
jcolebrand
@jcolebrand Hallo, ich stehe auch vor dem gleichen Problem. Ich habe eine Corporate Proxy-Konfiguration. Wo müssen wir diese DNS-Konfiguration hinzufügen? In daemon.json?
user2301
Haben Sie den in dieser Antwort angegebenen Befehl ausprobiert?
Jcolebrand
@jcolebrand Versucht mit docker build --dns 8.8.8.8 -t choco .hat nicht funktioniert. Dann habe ich "dns": ["8.8.8.8"]in daemon.json hinzugefügt, hat nicht funktioniert.
user2301
1
Ich dachte, die DNS-Flagge wurde ausgeführt, nicht beim Erstellen?
Jcolebrand
2

Da Kommentare nur vorübergehend sind, finden Sie hier einige Informationen für die nächste Person, die versucht, dieses Problem zu lösen. Sie können diese Antwort jederzeit bearbeiten, um weitere Details bereitzustellen, es sei denn, Sie sind Docker für Windows Pro. In diesem Fall geben Sie bitte eine bessere Antwort: D.

Ich habe das Problem für meine IT-Gruppe vorgeführt, nachdem ich meine Netzwerkkarte auf meiner VM auf Bridged geändert und meinen Thunderbolt-Adapter hinzugefügt hatte. Da Sicherheitssysteme vorhanden sind, wurde mir klar, dass ich die Sicherheitssoftware zu meiner VM hinzufügen musste, aber da sie nicht zur Domäne gehört, war dies ein Problem. Wenn Sie es über den WLAN-Adapter wieder auf NAT umstellen und dann das Problem in meiner Windows 2016-VM testen, funktioniert es auf magische Weise.

Gleiches Netzwerk. Gleiche VM-Konfiguration. Gleiche Software und Host, keine Änderungen an irgendetwas, das ich verfolgen kann.

Nachdem ich Get-ContainerNetwork oder Get-WinNat überprüft hatte und nichts angezeigt hatte, war ich wirklich am Ende der Diagnose. Das Ändern dieses NIC-Adapters und das anschließende Zurückwechseln führten anscheinend dazu, dass etwas zurückgesetzt wurde. Gute Zeiten.

Ich habe also keine solide Antwort, aber ich habe eine gute Lösung für die nächste Person, die in meinen Schuhen steckt. Angesichts meiner Erfolgsbilanz bei Fragen und Antworten zu StackExchange bin ich es. Aber ich hoffe, es hilft dir auch, zufälliger Internet-Fragesteller.


Und eine XKCD-Steuer für diejenigen, die Probleme nicht lösen können.

XKCD Comic Link zu "Weisheit der Alten"

jcolebrand
quelle
1
Nach dieser Beschreibung bin ich versucht, eine Rechnung in einen DNS-Cache zu stellen, der durch das Schließen / Nicht-Schließen des Netzwerkstapels gelöscht wurde, da Windows diese Idee hat, auch negative Anforderungen zwischenzuspeichern. Wenn es wieder passiert, lohnt es sich vielleicht, einen ipconfig /flushdnsauf dem Windows-Host zu versuchen
Tensibai
Der Host ist in diesem Fall OSX, wenn Sie das Basisbetriebssystem meinen, das alles hostet. Wenn Sie meinen, wo ich den Docker-Container ausführe, dann ist das Windows.
Jcolebrand
Ich meine den Windows-Host, ich erinnere mich nicht an * nix-basierte Netzwerkstapel, die negative Abfragen zwischenspeichern
Tensibai
1

Führen Sie an einer Eingabeaufforderung aus ipconfig /allund suchen Sie DNS Serversin der Ausgabe nach einer Zeile mit einer IP-Adresse. Das sind die DNS-Server Ihres Host-Computers.

Bearbeiten C:\ProgramData\Docker\config\daemon.jsonSie einen dnsEintrag mit dieser IP-Adresse und fügen Sie ihn hinzu . Wenn Ihr DNS-Server beispielsweise 192.10.0.2 und 8.8.8.8 als DNS von Google als Backup lautet:

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

Starten Sie nun Docker Desktop neu und die Remote-URLs können von Docker entweder zur Erstellung oder zur Laufzeit aufgelöst werden.

Diese Lösung kam von Faithful Anere unter https://medium.com/@faithfulanere/solved-docker-build-could-not-resolve-archive-ubuntu-com-apt-get-fails-to-install-anything-9ea4dfdcdcf2

Sussexrick
quelle
-1

Versuchen Sie es mit Installationsanweisungen unter https://chocolatey.org/install#completely-offline-install (Abschnitt "Installation hinter einem Proxy"):

    @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
Valerij Klein
quelle
1
Sie beantworten hier eine andere Frage, die Frage ist, warum der Container Internetadressen nicht auflösen kann
Tensibai