Impossibile connettersi a chocolatey.org o qualsiasi altro sito Internet dall'interno del contenitore


12

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

Comportamento atteso

Sto eseguendo Windows Server 2016 Datacenter (download MSDN) a 64 bit - Versione 1607 - Build 14393.1715

Sto usando Docker per Windows e eseguo Windows Containers.

Immagino che questa sia la cosa più semplice al mondo, per fare questo:

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

L'aspettativa è che questo installi cioccolato nel contenitore.

In realtà lo farò in un file docker, ma vado per un esempio minimo di lavoro per ottenere aiuto in questo momento.

Ecco un vero file docker che non riesce (non è così creativo, purtroppo)

FROM microsoft/windowsservercore

SHELL ["Powershell"]

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

Comportamento reale

Per prima cosa: sto eseguendo questo in una macchina virtuale Virtualbox. Tutto il resto su cui voglio lavorare funziona, incluso ma non limitato a: connettività e test di rete interni, server sql in esecuzione, servizi WCF in esecuzione sul mio ambiente di composizione docker, dati che ritornano correttamente. Tutte le cose che mi aspetto che faccia il sistema stanno funzionando. Questo è l'ultimo passo, incrociamo le dita: D. Il fatto che sto eseguendo questo in VirtualBox non dovrebbe importare, dal momento che Hyper-V funziona e tutte le mie macchine funzionano come previsto. Immagino che valga la pena menzionare.

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

Dal mio sistema operativo host (Server 2016) ho queste informazioni:

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>

Informazione

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

Informazioni di sistema

Esecuzione di Windows Server Datacenter (download MSDN) a 64 bit - Versione 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

Se, per qualsiasi motivo abbandonato, questo è importante, è necessario attivare il sistema operativo host. Lo sto facendo in un ambiente di sviluppo one-shot, quindi non ero ancora particolarmente preoccupato per l'attivazione della VM. Non riesco a capire quanto sia importante. Soprattutto perché tutto il resto "funziona".


Sembra che ci sia un problema simile pubblicato qui github.com/docker/for-win/issues/427 Prova a interrompere e avviare il servizio docker.
PrestonM,

1
Grazie @PrestonM l'ho fatto molte volte. E riavviato il computer. E get-netnat | remove-netnat
jcolebrand,

la corsa Stop-Service docker; Get-ContainerNetwork | Remove-ContainerNetwork -Force; Start-Service dockerpresenta un paio di problemi. nessun servizio trovato con la finestra mobile nome. nessuna rete container trovata con Get-ContainerNetwork
jcolebrand,

da dove stai eseguendo il comando? Virtualbox o Windows Server?
PrestonM,

1
@PrestonM Un po 'confuso. Consentitemi di riassumere la mia configurazione: Host OSX -> VirtualBox -> Windows Server 2016 -> Docker per Windows -> contenitore. Lo stack funziona tutti su layer Hyper-V e posso fare tutto ciò che chiedo sui miei contenitori, inclusa la comunicazione di rete interna tra app e un'istanza di database locale (microsoft / mssql-server-windows-developer) quindi tutto ciò che voglio da fare va bene. I comandi vengono emessi in un termine PowerShell sul contenitore. Il Server2016 può raggiungere bene Internet.
jcolebrand,

Risposte:


5

Il problema sembra essere che le immagini di Windows configurano il DNS in modo che sia prima il gateway predefinito dell'interfaccia NAT, quindi il DNS del computer host. Le ricerche DNS hanno esito negativo rispetto al primo resolver e all'accesso esterno.

L'aggiunta --dns 8.8.8.8(o il resolver locale) alla CLI sembra aggirare il problema.


È fantastico Chi può ottenerlo su un backlog per la risoluzione? : D
jcolebrand,

@jcolebrand Ciao, anch'io sto affrontando lo stesso problema. Ho una configurazione proxy aziendale. Dove dobbiamo aggiungere quella configurazione DNS? In daemon.json?
user2301

Hai provato il comando come indicato in questa risposta?
jcolebrand,

@jcolebrand Provato con docker build --dns 8.8.8.8 -t choco .non ha funzionato. Quindi ho aggiunto "dns": ["8.8.8.8"]in daemon.json non ha funzionato.
user2301

1
Pensavo che la bandiera DNS non fosse in esecuzione?
jcolebrand,

2

Poiché i commenti sono temporanei, ecco alcune informazioni per la prossima persona che cerca di risolvere questo problema. Sentiti libero di modificare questa risposta per fornire maggiori dettagli, a meno che tu non sia un Docker per Windows pro, nel qual caso fornisci una risposta migliore: D

Sono andato a dimostrare il problema per il mio gruppo IT dopo aver cambiato la mia scheda di rete sulla mia VM in bridge e aver aggiunto il mio adattatore thunderbolt. Dato che esistono sistemi di sicurezza, mi sono reso conto che dovevo aggiungere il software di sicurezza alla mia VM, ma dato che non è unito al dominio, questo è stato un problema. Il passaggio a NAT sull'adattatore wifi e quindi la dimostrazione del problema nella mia macchina virtuale Windows 2016 in qualche modo ha fatto magicamente iniziare a funzionare.

Stessa rete Stessa configurazione della VM. Stesso software e host, nessuna modifica a tutto ciò che posso tracciare.

Dopo aver verificato Get-ContainerNetwork o Get-WinNat che non mostravano nulla, ero davvero alla fine della diagnostica. La modifica di quell'adattatore NIC e quindi la sua modifica apparentemente hanno causato il ripristino di qualcosa. Bei tempi.

Quindi, non ho una risposta solida, ma ho una buona soluzione per la prossima persona incastrata nei miei panni, che, dato il mio curriculum di domande e risposte StackExchange, sarò io. Ma spero che ti aiuti anche tu, cercatore di Internet a caso.


E una tassa XKCD, per quelli impossibili da risolvere.

Comico XKCD Link a "Saggezza degli antichi"


1
Secondo questa descrizione, sono tentato di mettere una fattura in una cache DNS cancellata dalla chiusura / non chiusura dello stack di rete poiché Windows ha questa gentile idea di memorizzare anche nella cache richieste negative. Se dovesse succedere di nuovo, potrebbe valere la pena provare un ipconfig /flushdnshost di Windows
Tensibai,

Inteso aggiungere, l'host in questo caso è OSX, se intendi il sistema operativo di base che ospita tutto. Se intendi dove sto eseguendo il contenitore della finestra mobile, è Windows.
jcolebrand,

Intendo l'host di Windows, non ricordo che la rete basata su nix impila la memorizzazione nella cache di query negative
Tensibai

1

A un prompt dei comandi, eseguire ipconfig /alle cercare una DNS Serversriga nell'output con qualcosa che assomigli a un indirizzo IP. Questi sono i server DNS della tua macchina host.

Modifica C:\ProgramData\Docker\config\daemon.jsone aggiungi una dnsvoce con quell'indirizzo IP. Ad esempio, se il tuo server DNS è 192.10.0.2 e 8.8.8.8 è il DNS di Google come backup:

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

Ora riavvia Docker Desktop e gli URL remoti possono essere risolti da Docker, al momento della compilazione o in fase di esecuzione.

Questa soluzione proveniva da Faithful Anere su https://medium.com/@faithfulanere/solved-docker-build-could-not-resolve-archive-ubuntu-com-apt-get-fails-to-install-anything-9ea4dfdcdcf2


-1

Prova le istruzioni di installazione da https://chocolatey.org/install#completely-offline-install (sezione "Installazione dietro un 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

1
Stai rispondendo a una domanda diversa qui, la domanda è perché il contenitore non è in grado di risolvere gli indirizzi Internet
Tensibai,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.