xpost de https://forums.docker.com/t/cannot-connect-to-chocolatey-org/38745
Comportamiento esperado
Estoy ejecutando Windows Server 2016 Datacenter (descarga de MSDN) 64 bit - Versión 1607 - Compilación 14393.1715
Estoy usando Docker para Windows y ejecuto Windows Containers.
Me imagino que esto es lo más fácil del mundo, hacer esto:
reboot my host machine
docker run -it microsoft/windowsservercore
powershell
iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'));
La expectativa es que esto instale chocolate en el contenedor.
Realmente voy a hacer esto en un dockerfile, pero voy a buscar un ejemplo mínimo de trabajo para obtener ayuda en este momento.
Aquí hay un archivo acoplable real que falla (lamentablemente no es tan creativo)
FROM microsoft/windowsservercore
SHELL ["Powershell"]
ENV ChocolateyUseWindowsCompression false;
RUN iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'));
Comportamiento real
Primero lo primero: estoy ejecutando esto en una máquina virtual Virtualbox. Todo lo demás que quiero trabajar funciona, incluyendo, entre otros: conectividad de red interna y pruebas, servidor sql en ejecución, servicios WCF que se ejecutan en mi entorno compuesto por docker, datos que regresan correctamente. Todas las cosas que espero que haga el sistema están funcionando. Este es el último paso, con los dedos cruzados: D. El hecho de que esté ejecutando esto en VirtualBox no debería importar, ya que Hyper-V funciona y todas mis máquinas funcionan como se esperaba. Me imagino que vale la pena mencionarlo.
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
Desde mi sistema operativo host (Server 2016) tengo esta información:
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>
Información
Salida de DockerDebugInfo.ps1: https://gist.github.com/jcolebrand/170673e45bf8a659552f22f2071c30d6
Información del sistema
Ejecución de Windows Server Datacenter (descarga MSDN) 64 bit - Versión 1607 - Compilación 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, por alguna razón olvidada, esto es importante, el sistema operativo host debe estar activado. Estoy haciendo esto en un entorno de desarrollo de una sola vez, así que todavía no estaba particularmente preocupado por activar la VM. No puedo entender cómo esto es importante. Sobre todo porque todo lo demás "simplemente funciona".
Stop-Service docker; Get-ContainerNetwork | Remove-ContainerNetwork -Force; Start-Service docker
presenta un par de problemas. no se encontró ningún servicio con el nombre docker. no se encontraron redes de contenedores con Get-ContainerNetworkRespuestas:
El problema parece ser que las imágenes de Windows configuran DNS para que primero sea la puerta de enlace predeterminada de la interfaz NAT y luego el DNS de la máquina host. Las búsquedas de DNS fallan contra ese primer resolutor y acceso externo.
Agregar
--dns 8.8.8.8
(o su solucionador local) a la CLI parece solucionar el problema.fuente
docker build --dns 8.8.8.8 -t choco .
no funcionó. Luego agregué"dns": ["8.8.8.8"]
en daemon.json no funcionó.Como los comentarios son transitorios, aquí hay información para la próxima persona que intente resolver este problema. No dude en editar esta respuesta para proporcionar más detalles, a menos que sea un Docker para Windows pro, en cuyo caso, responda mejor: D
Fui a hacer una demostración del problema para mi grupo de TI después de haber cambiado mi NIC en mi VM a puente y agregar mi adaptador Thunderbolt. Como existen sistemas de seguridad, me di cuenta de que necesitaba agregar el software de seguridad a mi VM, pero como no está unido al dominio, eso fue un problema. Cambiarlo de nuevo a NAT en el adaptador wifi y luego hacer una demostración del problema en mi VM Windows 2016 de alguna manera mágicamente lo hizo comenzar a funcionar.
La misma red La misma configuración de VM. Mismo software y host, no hay cambios en nada que pueda rastrear.
Habiendo comprobado Get-ContainerNetwork o Get-WinNat sin mostrar nada, realmente había llegado al final de mi diagnóstico. Cambiar ese adaptador NIC y luego volver a cambiarlo aparentemente causó que algo se reiniciara. Buenos tiempos.
Por lo tanto, no tengo una respuesta sólida, pero tengo una buena solución para la próxima persona atrapada en mis zapatos, que, dado mi historial de preguntas y respuestas de StackExchange, seré yo. Pero espero que también te ayude, buscador aleatorio de internet.
Y un impuesto XKCD, para aquellos imposibles de resolver problemas.
fuente
ipconfig /flushdns
en el host de WindowsEn el símbolo del sistema, ejecute
ipconfig /all
y busque unaDNS Servers
línea en la salida con algo que parezca una dirección IP. Esos son los servidores DNS de su máquina host.Edite
C:\ProgramData\Docker\config\daemon.json
y agregue unadns
entrada con esa dirección IP. Por ejemplo, si su servidor DNS es 192.10.0.2 y 8.8.8.8 es el DNS de Google como respaldo:Ahora reinicie Docker Desktop y Docker puede resolver las URL remotas, ya sea en la compilación o en tiempo de ejecución.
Esta solución vino de Faithful Anere en https://medium.com/@faithfulanere/solved-docker-build-could-not-resolve-archive-ubuntu-com-apt-get-fails-to-install-anything-9ea4dfdcdcf2
fuente
Pruebe las instrucciones de instalación de https://chocolatey.org/install#completely-offline-install (sección "Instalación detrás de un proxy"):
fuente