Impossible de se connecter à chocolatey.org ou à tout autre site Internet à partir du conteneur

12

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

Comportement prévisible

J'exécute Windows Server 2016 Datacenter (téléchargement MSDN) 64 bits - Version 1607 - Build 14393.1715

J'utilise Docker pour Windows et j'exécute des conteneurs Windows.

Je pense que c'est la chose la plus simple au monde, pour ce faire:

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

L'attente est que cela installe du chocolat dans le récipient.

En fait, je vais le faire dans un dockerfile, mais je vais pour un exemple de travail minimum pour obtenir de l'aide maintenant.

Voici un fichier docker réel qui échoue (ce n'est pas si créatif, malheureusement)

FROM microsoft/windowsservercore

SHELL ["Powershell"]

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

Comportement réel

Tout d'abord: je l'exécute dans une machine virtuelle Virtualbox. Tout ce que je veux travailler fonctionne, y compris mais sans s'y limiter: connectivité et tests du réseau interne, serveur SQL en cours d'exécution, services WCF exécutés sur mon environnement de composition de docker, les données reviennent correctement. Toutes les choses que j'attends du système fonctionnent. C'est la dernière étape, les doigts croisés: D. Le fait que j'exécute cela dans VirtualBox ne devrait pas avoir d'importance, car l'Hyper-V fonctionne et toutes mes machines fonctionnent comme prévu. Je pense juste que cela mérite d'être mentionné.

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

Depuis mon OS hôte (Server 2016), j'ai ces informations:

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

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

Informations système

Exécution de Windows Server Datacenter (téléchargement MSDN) 64 bits - 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

Si, pour une raison quelconque, cela est important, le système d'exploitation hôte doit être activé. Je fais cela dans un environnement de développement à un coup donc je n'étais pas particulièrement inquiet pour l'activation de la VM pour l'instant. Je ne peux pas comprendre à quel point c'est important. D'autant plus que tout le reste "fonctionne juste".

jcolebrand
la source
Il semble qu'il y ait un problème similaire publié ici github.com/docker/for-win/issues/427 Essayez d'arrêter et de démarrer le service docker.
PrestonM
1
Merci @PrestonM, je l'ai fait plusieurs fois. Et redémarré l'ordinateur. Et get-netnat | remove-netnat
jcolebrand
courir Stop-Service docker; Get-ContainerNetwork | Remove-ContainerNetwork -Force; Start-Service dockerprésente quelques problèmes. aucun service trouvé avec le nom docker. aucun réseau de conteneurs trouvé avec Get-ContainerNetwork
jcolebrand
d'où exécutez-vous la commande? Virtualbox ou Windows Server?
PrestonM
1
@PrestonM Un peu confus. Permettez-moi de récapituler ma configuration: hôte OSX -> VirtualBox -> Windows Server 2016 -> Docker pour Windows -> conteneur. La pile fonctionne sur des couches Hyper-V, et je peux faire tout ce que je demande sur mes conteneurs, y compris la communication réseau interne entre les applications et une instance de base de données locale (microsoft / mssql-server-windows-developer) donc tout ce que je veux faire est bien. Les commandes sont émises dans un terme PowerShell sur le conteneur. Le Server2016 peut très bien accéder à Internet.
jcolebrand

Réponses:

5

Le problème semble être que les images Windows configurent DNS pour être d'abord la passerelle par défaut de l'interface NAT, puis le DNS de la machine hôte. Les recherches DNS échouent contre ce premier résolveur et cet accès externe.

L'ajout --dns 8.8.8.8(ou votre résolveur local) à la CLI semble contourner le problème.

Steven Murawski
la source
C'est génial. Qui peut mettre cela en attente de résolution? : D
jcolebrand
@jcolebrand Salut, je suis également confronté au même problème. J'ai une configuration de proxy d'entreprise. Où devons-nous ajouter cette configuration DNS? Dans daemon.json?
user2301
Avez-vous essayé la commande comme indiqué dans cette réponse?
jcolebrand
@jcolebrand Essayé avec docker build --dns 8.8.8.8 -t choco .n'a pas fonctionné. Ensuite, j'ai ajouté "dns": ["8.8.8.8"]dans daemon.json ne fonctionnait pas.
user2301
1
Je pensais que le drapeau DNS était en cours d'exécution et non à la construction?
jcolebrand
2

Comme les commentaires sont transitoires, voici quelques informations pour la prochaine personne essayant de résoudre ce problème. N'hésitez pas à modifier cette réponse pour fournir plus de détails, sauf si vous êtes un Docker pour Windows pro, auquel cas veuillez donner une meilleure réponse: D

Je suis allé faire une démonstration du problème pour mon groupe informatique après avoir changé mon NIC sur ma VM en ponté et ajouté mon adaptateur Thunderbolt. Comme il existe des systèmes de sécurité, j'ai réalisé que je devais ajouter le logiciel de sécurité à ma machine virtuelle, mais comme il n'est pas joint au domaine, c'était un problème. Le basculer à nouveau sur NAT sur l'adaptateur wifi, puis aller démo du problème dans ma machine virtuelle Windows 2016 l'a fait en quelque sorte comme par magie commencer à fonctionner.

Même réseau. Même configuration de machine virtuelle. Même logiciel et hôte, aucun changement à tout ce que je peux suivre.

Après avoir vérifié Get-ContainerNetwork ou Get-WinNat ne montrant rien, j'étais vraiment à la fin des diagnostics. Changer cet adaptateur NIC puis le changer en arrière a apparemment provoqué une réinitialisation. Bon temps.

Donc, je n'ai pas de réponse solide, mais j'ai une bonne solution de contournement pour la prochaine personne coincée dans mes chaussures, qui, compte tenu de mes antécédents de questions et réponses sur StackExchange, sera moi. Mais j'espère que cela vous aide aussi, demandeur Internet aléatoire.


Et une taxe XKCD, pour ceux impossibles à résoudre les problèmes.

Lien comique XKCD vers "Sagesse des anciens"

jcolebrand
la source
1
Selon cette description, je suis tenté de mettre une facture sur un cache DNS effacé par la fermeture / non fermeture de la pile réseau car Windows a cette bonne idée de mettre en cache également les demandes négatives. Si cela se reproduit, cela peut valoir la peine d'essayer un ipconfig /flushdnssur l'hôte Windows
Tensibai
Conçu pour ajouter, l'hôte dans ce cas est OSX, si vous voulez dire le système d'exploitation de base hébergeant tout. Si vous voulez dire où j'exécute le conteneur Docker, c'est Windows.
jcolebrand
Je veux dire l'hôte Windows, je ne me souviens pas * les piles de réseau basées sur nix
mettent en
1

À l'invite de commandes, exécutez ipconfig /allet recherchez une DNS Serversligne dans la sortie avec quelque chose qui ressemble à une adresse IP. Il s'agit du ou des serveurs DNS de votre ordinateur hôte.

Modifiez C:\ProgramData\Docker\config\daemon.jsonet ajoutez une dnsentrée avec cette adresse IP. Par exemple, si votre serveur DNS est 192.10.0.2 et 8.8.8.8 est le DNS de Google en tant que sauvegarde:

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

Redémarrez maintenant Docker Desktop et les URL distantes peuvent être résolues par Docker, soit lors de la construction, soit lors de l'exécution.

Cette solution est venue de Faithful Anere à https://medium.com/@faithfulanere/solved-docker-build-could-not-resolve-archive-ubuntu-com-apt-get-fails-to-install-anything-9ea4dfdcdcf2

sussexrick
la source
-1

Essayez les instructions d'installation de https://chocolatey.org/install#completely-offline-install (section "Installation derrière 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
Valerij Klein
la source
1
Vous répondez à une question différente ici, la question est de savoir pourquoi le conteneur ne peut pas résoudre les adresses Internet
Tensibai