컨테이너 내에서 chocolatey.org 또는 다른 인터넷 사이트에 연결할 수 없습니다


12

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

예상되는 행동

Windows Server 2016 Datacenter (MSDN 다운로드) 64 비트를 실행 중입니다. 버전 1607-빌드 14393.1715

Docker For Windows를 사용하고 Windows 컨테이너를 실행하고 있습니다.

나는 이것이 세상에서 가장 쉬운 일이라고 생각합니다.

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

이것은 용기에 초콜릿을 설치할 것으로 기대된다.

실제로 dockerfile 에서이 작업을 수행하려고하지만 지금은 최소한의 실제 예제를 통해 도움을받을 것입니다.

실패한 실제 도커 파일은 다음과 같습니다.

FROM microsoft/windowsservercore

SHELL ["Powershell"]

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

실제 행동

가장 먼저해야 할 사항 : Virtualbox VM에서 이것을 실행하고 있습니다. 내부 네트워크 연결 및 테스트, SQL Server 실행, 도커 작성 환경에서 실행되는 WCF 서비스, 데이터가 올바르게 돌아 오는 것을 포함하지만 이에 국한되지 않는 다른 모든 작업이 작동합니다. 시스템이 기대하는 모든 것이 작동하고 있습니다. 이것은 손가락이 교차 한 마지막 단계입니다. Hyper-V가 작동하고 모든 컴퓨터가 예상대로 작동하기 때문에 VirtualBox에서이를 실행한다는 사실은 중요하지 않습니다. 나는 그것이 언급 할 가치가 있다고 생각합니다.

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

내 호스트 OS (Server 2016)에서이 정보가 있습니다.

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>

정보

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

시스템 정보

Windows Server Datacenter (MSDN 다운로드) 64 비트 실행-버전 1607-빌드 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

어떤 이유로 든 이것이 중요한 경우 호스트 OS를 활성화해야합니다. 원샷 개발 환경 에서이 작업을 수행하고 있으므로 아직 VM을 활성화하는 것에 대해 특별히 걱정하지 않았습니다. 이것이 얼마나 중요한지를 짐작할 수 없습니다. 특히 다른 모든 것은 "그냥 작동"하기 때문입니다.


github.com/docker/for-win/issues/427에 비슷한 문제가 게시 된 것 같습니다 . docker 서비스를 중지했다가 시작하십시오.
PrestonM

1
@PrestonM에게 감사드립니다. 그리고 컴퓨터를 재부팅했습니다. 그리고 get-netnat | remove-netnat
jcolebrand

러닝 Stop-Service docker; Get-ContainerNetwork | Remove-ContainerNetwork -Force; Start-Service docker에는 몇 가지 문제가 있습니다. 이름이 docker 인 서비스가 없습니다. 어떤 용기 네트워크는 GET-ContainerNetwork 발견
jcolebrand

어디에서 명령을 실행하고 있습니까? Virtualbox 또는 Windows Server?
PrestonM

1
@PrestonM 약간 혼란 스럽다. OSX 호스트-> VirtualBox-> Windows Server 2016-> Docker for Windows-> 컨테이너 설정을 다시 살펴 보겠습니다. 스택은 모두 Hyper-V 계층에서 실행되고 있으며 앱과 로컬 데이터베이스 인스턴스 (microsoft / mssql-server-windows-developer) 간의 내부 네트워크 통신을 포함하여 컨테이너에서 요청하는 다른 모든 작업을 수행 할 수 있습니다. 할 수 있습니다. 명령은 컨테이너에서 파워 쉘로 발행됩니다. Server2016은 인터넷에 연결할 수 있습니다.
jcolebrand

답변:


5

문제는 Windows 이미지가 먼저 DNS를 NAT 인터페이스의 기본 게이트웨이로 설정 한 다음 호스트 시스템의 DNS로 구성하는 것 같습니다. 첫 번째 확인자와 외부 액세스에 대한 DNS 조회가 실패합니다.

--dns 8.8.8.8CLI에 (또는 로컬 리졸버)를 추가 하면 문제를 해결할 수 있습니다.


대단해. 누가 해결을 위해 백 로그에이를 얻을 수 있습니까? : D
jcolebrand

@ jcolebrand 안녕하세요, 나는 같은 문제에 직면하고 있습니다. 회사 프록시 구성이 있습니다. 해당 DNS 구성을 어디에 추가해야합니까? daemon.json에서?
user2301

이 답변에 표시된대로 명령을 시도 했습니까?
jcolebrand

@jcolebrand 님과 함께 시도 docker build --dns 8.8.8.8 -t choco .하지 못했습니다. 그런 다음 "dns": ["8.8.8.8"]daemon.json에 추가 하지 않았습니다.
user2301

1
dns 플래그가 빌드 상태가 아니라고 생각했습니다.
jcolebrand

2

주석은 일시적이므로이 문제를 해결하려는 다음 사람을위한 정보가 있습니다. Docker for Windows pro가 아닌 경우 더 자세한 답변을 제공하려면이 답변을 편집하여 자세한 내용을 제공하십시오 .D

VM의 NIC를 브리지로 변경하고 벼락 어댑터를 추가 한 후 IT 그룹의 문제를 시연했습니다. 보안 시스템이 설치되어 있으므로 VM에 보안 소프트웨어를 추가해야한다는 것을 깨달았지만 도메인에 연결되지 않았기 때문에 문제가되었습니다. Wi-Fi 어댑터에서 NAT로 다시 전환 한 다음 Windows 2016 VM에서 문제를 시연하여 마술처럼 작동하게 만들었습니다.

동일한 네트워크. 동일한 VM 구성 동일한 소프트웨어 및 호스트, 추적 할 수있는 항목이 변경되지 않았습니다.

Get-ContainerNetwork 또는 Get-WinNat에 아무 것도 표시되지 않았으므로 진단이 끝났습니다. 해당 NIC 어댑터를 변경 한 다음 다시 변경하면 무언가 재설정됩니다. 좋은 시간.

따라서 확실한 대답은 없지만 다음 사람이 내 신발에 갇혀있는 좋은 해결 방법이 있습니다. 스택 교환 질문 및 답변에 대한 내 기록을 보면 나에게 도움이 될 것입니다. 그러나 나는 그것이 당신을 도울 수 있기를 바랍니다.


그리고 XKCD 세금은 문제를 해결할 수없는 사람들을위한 것입니다.

"고대의 지혜"에 XKCD 만화 링크


1
이 설명에 따르면, Windows는 부정적인 요청을 캐시하는 이런 종류의 아이디어를 가지고 있기 때문에 네트워크 스택의 종료 / 종료에 의해 지워진 DNS 캐시에 요금을 청구하려고합니다. 다시 발생 ipconfig /flushdns하면 Windows 호스트에서 시도해 볼 가치가 있습니다.
Tensibai

추가해야 할 경우이 경우 호스트는 모든 OS를 호스팅하는 기본 OS를 의미하는 경우 OSX입니다. 도커 컨테이너를 실행하는 곳을 말하면 그게 창입니다.
jcolebrand

Windows 호스트를 의미합니다. * 닉스 기반 네트워크 스택이 부정적인 쿼리를 캐싱하는 것을 기억하지 못합니다
Tensibai

1

명령 프롬프트 에서 IP 주소처럼 보이는 것을 출력에서 ​​줄을 ipconfig /all찾으십시오 DNS Servers. 이것이 호스트 머신의 DNS 서버입니다.

해당 IP 주소 C:\ProgramData\Docker\config\daemon.jsondns항목을 편집 하고 추가 하십시오 . 예를 들어 DNS 서버가 192.10.0.2이고 8.8.8.8이 백업 인 Google의 DNS 인 경우 :

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

이제 Docker Desktop을 다시 시작하면 Docker가 원격 URL을 빌드 또는 런타임에 확인할 수 있습니다.

이 솔루션은 https://medium.com/@faithfulanere/solved-docker-build-could-not-resolve-archive-ubuntu-com-apt-get-fails-to-install-anything-9ea4dfdcdcf2의 Faithful Anere에서 제공했습니다.


-1

https://chocolatey.org/install#completely-offline-install ( "프록시 뒤에 설치"섹션) 에서 설치 지침을 시도하십시오 .

    @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
여기서 다른 질문에 대답하고 있습니다. 컨테이너가 인터넷 주소를 확인할 수없는 이유입니다.
Tensibai
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.