Não é possível conectar-se ao chocolatey.org ou a qualquer outro site da Internet a partir do contêiner

11

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

Comportamento esperado

Estou executando o Datacenter do Windows Server 2016 (download do MSDN) de 64 bits - Versão 1607 - Compilação 14393.1715

Estou usando o Docker For Windows e executando o Windows Containers.

Eu acho que essa é a coisa mais fácil do mundo, para fazer isso:

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

A expectativa é que isso instale chocolate no recipiente.

Na verdade, eu vou fazer isso em um arquivo docker, mas estou procurando um exemplo de trabalho mínimo para obter ajuda agora.

Aqui está um arquivo docker real que falha (não é tão criativo, infelizmente)

FROM microsoft/windowsservercore

SHELL ["Powershell"]

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

Comportamento real

Primeiras coisas primeiro: estou executando isso em uma VM do Virtualbox. Todo o resto que eu quero trabalhar funciona, incluindo, entre outros: conectividade e testes de rede interna, execução de servidor sql, serviços WCF em execução no meu ambiente de composição de encaixe, dados retornando corretamente. Todas as coisas que espero que o sistema faça estão funcionando. Este é o último passo, dedos cruzados: D. O fato de eu estar executando isso no VirtualBox não deve importar, pois o Hyper-V está funcionando e todas as minhas máquinas estão funcionando conforme o esperado. Só acho que vale a pena mencionar.

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

No sistema operacional host (Server 2016), tenho essas informações:

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>

Em formação

Saída do DockerDebugInfo.ps1: https://gist.github.com/jcolebrand/170673e45bf8a659552f22f2071c30d6

Informação do sistema

Executando o Datacenter do Windows Server (download do MSDN) de 64 bits - Versão 1607 - Compilação 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, por qualquer motivo esquecido, isso for importante, o sistema operacional host precisará ser ativado. Estou fazendo isso em um ambiente de desenvolvimento one-shot, por isso não estava particularmente preocupado em ativar a VM ainda. Não consigo entender como isso é importante. Especialmente porque tudo o resto "simplesmente funciona".

jcolebrand
fonte
Parece que há um problema semelhante postado aqui github.com/docker/for-win/issues/427 Tente parar e iniciar o serviço docker.
PrestonM 26/09/17
1
Obrigado @PrestonM eu fiz isso muitas vezes. E reiniciou o computador. E get-netnat | remove-netnat
jcolebrand
correr Stop-Service docker; Get-ContainerNetwork | Remove-ContainerNetwork -Force; Start-Service dockerapresenta alguns problemas. nenhum serviço encontrado com o docker de nome. nenhuma rede de contêiner encontrada com Get-ContainerNetwork
jcolebrand 26/17
de onde você está executando o comando? Virtualbox ou Windows Server?
PrestonM 26/09/17
1
@PrestonM Um pouco confuso. Deixe-me recapitular minha configuração: Host OSX -> VirtualBox -> Windows Server 2016 -> Docker para Windows -> contêiner. A pilha está sendo executada nas camadas do Hyper-V e posso fazer tudo o que pedir nos meus contêineres, incluindo comunicação interna de rede entre aplicativos e uma instância de banco de dados local (microsoft / mssql-server-windows-developer) para tudo o que eu quero fazer está bem. Os comandos estão sendo emitidos em um termo de PowerShell no contêiner. O Server2016 pode acessar a Internet muito bem.
jcolebrand

Respostas:

5

O problema parece ser que as imagens do Windows configuram o DNS primeiro como o gateway padrão da interface NAT e, em seguida, o DNS da máquina host. As pesquisas de DNS falham nesse primeiro resolvedor e no acesso externo.

Adicionar --dns 8.8.8.8(ou seu resolvedor local) à CLI parece solucionar o problema.

Steven Murawski
fonte
Fantástico. Quem pode obter isso em um backlog para resolução? : D
jcolebrand 28/09
@ jcolebrand Oi, também estou enfrentando o mesmo problema. Eu tenho configuração de proxy corporativo. Onde precisamos adicionar essa configuração de DNS? No daemon.json?
precisa saber é o seguinte
Você tentou o comando conforme indicado nesta resposta?
precisa saber é o seguinte
@jcolebrand Tentei com docker build --dns 8.8.8.8 -t choco .não funcionou. Então eu adicionei "dns": ["8.8.8.8"]no daemon.json não funcionou.
usar o seguinte comando
1
Eu pensei que a bandeira do DNS estava em execução, não na compilação?
precisa saber é o seguinte
2

Como os comentários são transitórios, aqui estão algumas informações para a próxima pessoa que tenta resolver esse problema. Sinta-se à vontade para editar esta resposta para fornecer mais detalhes, a menos que você seja um Docker for Windows pro; nesse caso, dê uma resposta melhor: D

Fui demonstrar o problema para o meu grupo de TI depois de alterar minha NIC na minha VM para fazer uma ponte e adicionar meu adaptador de raio. Como existem sistemas de segurança, percebi que precisava adicionar o software de segurança à minha VM, mas como ele não está associado ao domínio, isso foi um problema. Trocá-lo de volta para NAT no adaptador wifi e, em seguida, demonstrar o problema na minha VM do Windows 2016, de alguma forma mágica, fez com que ele começasse a funcionar.

Mesma rede. Mesma configuração de VM. Mesmo software e host, sem alterações em nada que eu possa rastrear.

Tendo verificado Get-ContainerNetwork ou Get-WinNat sem mostrar nada, eu realmente estava no final do diagnóstico. Alterar esse adaptador de NIC e, em seguida, alterá-lo novamente, aparentemente causou uma redefinição. Bons tempos.

Portanto, não tenho uma resposta sólida, mas tenho uma boa solução alternativa para a próxima pessoa presa no meu lugar, que, dado meu histórico de perguntas e respostas do StackExchange, serei eu. Mas espero que ajude você também, solicitante aleatório da Internet.


E um imposto XKCD, para aqueles impossíveis de resolver problemas.

Link em quadrinhos do XKCD para "Sabedoria dos Antigos"

jcolebrand
fonte
1
De acordo com esta descrição, sou tentado a colocar uma fatura em um cache DNS limpo pelo fechamento / não fechamento da pilha de rede, pois o Windows tem essa ideia de armazenar em cache solicitações negativas também. Se se trata de acontecer novamente, que vale maio tentar um ipconfig /flushdnsno host janelas
Tensibai
Pretende-se adicionar, neste caso, o host é OSX, se você quer dizer o SO base que hospeda tudo. Se você quer dizer onde estou executando o contêiner do docker, são janelas.
precisa saber é
Quero dizer o host do Windows, eu não me lembro * nix pilhas de rede baseados cache consultas negativas
Tensibai
1

Em um prompt de comando, execute ipconfig /alle procure uma DNS Serverslinha na saída com algo parecido com um endereço IP. Esses são os servidores DNS da sua máquina host.

Edite C:\ProgramData\Docker\config\daemon.jsone adicione uma dnsentrada com esse endereço IP. Por exemplo, se o seu servidor DNS for 192.10.0.2 e 8.8.8.8 for o DNS do Google como backup:

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

Agora reinicie o Docker Desktop e os URLs remotos podem ser resolvidos pelo Docker, no build ou no tempo de execução.

Esta solução veio da Faithful Anere em https://medium.com/@faithfulanere/solved-docker-build-could-not-resolve-archive-ubuntu-com-apt-get-fails-to-install-anything-9ea4dfdcdcf2

sussexrick
fonte
-1

Tente as instruções de instalação em https://chocolatey.org/install#completely-offline-install (seção "Instalando atrás de um 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
fonte
1
Você está respondendo uma pergunta diferente aqui, a questão é por que o recipiente não pode resolver endereços de internet
Tensibai