ไม่สามารถเชื่อมต่อกับ chocolatey.org หรือเว็บไซต์อินเทอร์เน็ตอื่น ๆ จากภายในตู้คอนเทนเนอร์


12

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

พฤติกรรมที่คาดหวัง

ฉันใช้ Windows Server 2016 Datacenter (ดาวน์โหลด MSDN) 64 บิต - รุ่น 1607 - Build 14393.1715

ฉันใช้ Docker สำหรับ Windows และใช้งาน Windows Containers

ฉันคิดว่านี่เป็นสิ่งที่ง่ายที่สุดในโลกเมื่อต้องการทำสิ่งนี้:

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 ที่ทำงานบริการ WCF ที่ทำงานกับสภาพแวดล้อมที่ประกอบด้วยนักเขียนของฉันข้อมูลกลับมาอย่างถูกต้อง ทุกสิ่งที่ฉันคาดหวังว่าระบบจะทำงานได้ นี่เป็นขั้นตอนสุดท้ายที่มีนิ้วข้าม: D ความจริงที่ว่าฉันกำลังใช้งานใน VirtualBox ไม่ควรมีความสำคัญเนื่องจาก Hyper-V ทำงานได้และเครื่องของฉันก็ทำงานได้ตามที่คาดไว้ ฉันแค่คิดว่ามันเป็นมูลค่าการกล่าวขวัญ

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

จากโฮสต์ระบบปฏิบัติการของฉัน (เซิร์ฟเวอร์ 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 - 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

ถ้าด้วยเหตุผลใดก็ตามที่ถูกทอดทิ้งนี่เป็นสิ่งสำคัญโฮสต์ระบบปฏิบัติการจะต้องเปิดใช้งาน ฉันกำลังทำสิ่งนี้ในสภาพแวดล้อมการพัฒนาแบบ one-shot ดังนั้นไม่ต้องกังวลกับการเปิดใช้งาน VM เพียงอย่างเดียว ฉันไม่สามารถเข้าใจได้ว่าสิ่งนี้สำคัญอย่างไร โดยเฉพาะอย่างยิ่งเนื่องจากทุกอย่าง "ได้ผล"


ดูเหมือนว่ามีปัญหาที่คล้ายกันโพสต์ที่นี่github.com/docker/for-win/issues/427ลองหยุดและเริ่มบริการนักเทียบท่า
PrestonM

1
ขอบคุณ @PrestonM ฉันทำอย่างนั้นหลายครั้ง และรีบูทคอมพิวเตอร์ และ get-netnat | remove-netnat
jcolebrand

วิ่งStop-Service docker; Get-ContainerNetwork | Remove-ContainerNetwork -Force; Start-Service dockerนำเสนอปัญหาสองสาม ไม่พบบริการที่มีชื่อนักเทียบท่า ไม่พบเครือข่ายคอนเทนเนอร์ด้วย Get-ContainerNetwork
jcolebrand

คุณเรียกใช้คำสั่งจากที่ไหน Virtualbox หรือ Windows Server
PrestonM

1
@PrestonM สับสนเล็กน้อย ให้ฉันสรุปการตั้งค่าของฉัน: โฮสต์ OSX -> VirtualBox -> Windows Server 2016 -> Docker สำหรับ Windows -> คอนเทนเนอร์ สแต็คทำงานบนเลเยอร์ Hyper-V และฉันสามารถทำทุกอย่างที่ฉันต้องการบนคอนเทนเนอร์ของฉันรวมถึงการสื่อสารเครือข่ายภายในระหว่างแอพและอินสแตนซ์ฐานข้อมูลท้องถิ่น (microsoft / mssql-server-windows-developer) ดังนั้นทุกอย่างที่ฉันต้องการ ต้องทำก็ดี คำสั่งจะถูกนำออกใช้ในคำ PowerShell บนภาชนะ Server2016 สามารถเข้าถึงอินเทอร์เน็ตได้ดี
jcolebrand

คำตอบ:


6

ปัญหาดูเหมือนว่ารูปภาพ Windows กำหนดค่า DNS ก่อนจะเป็นเกตเวย์เริ่มต้นของอินเทอร์เฟซ NAT และ DNS ของเครื่องโฮสต์ การค้นหา DNS ล้มเหลวกับตัวแก้ไขตัวแรกและการเข้าถึงจากภายนอก

การเพิ่ม--dns 8.8.8.8(หรือตัวแก้ไขท้องถิ่นของคุณ) ไปยัง CLI ดูเหมือนว่าจะแก้ไขปัญหาได้


ที่น่ากลัว. ใครสามารถหาสิ่งนี้ได้ใน Backlog เพื่อทำการแก้ไข : D
jcolebrand

@ jcolebrand สวัสดีฉันกำลังเผชิญกับปัญหาเดียวกัน ฉันมีการกำหนดค่าพร็อกซีขององค์กร เราจะต้องเพิ่มการกำหนดค่า dns นั้นที่ไหน? ใน daemon.json
2301

คุณลองคำสั่งตามที่ระบุในคำตอบนี้หรือไม่?
jcolebrand

@ jcolebrand พยายามด้วยdocker build --dns 8.8.8.8 -t choco .ไม่ได้ทำงาน จากนั้นฉันเพิ่ม"dns": ["8.8.8.8"]ใน daemon.json ไม่ทำงาน
user2301

1
ฉันคิดว่าค่าสถานะ dns นั้นไม่ทำงานที่การสร้างใช่ไหม
jcolebrand

2

เนื่องจากความคิดเห็นไม่ต่อเนื่องนี่เป็นข้อมูลสำหรับบุคคลถัดไปที่พยายามแก้ไขปัญหานี้ โปรดแก้ไขคำตอบนี้เพื่อให้รายละเอียดเพิ่มเติมเว้นแต่คุณจะเป็น Docker สำหรับ Windows pro ซึ่งในกรณีนี้โปรดให้คำตอบที่ดีกว่า: D

ฉันไปสาธิตปัญหาให้กับกลุ่มไอทีของฉันหลังจากเปลี่ยน NIC ของฉันบน VM เป็นบริดจ์และเพิ่มอะแดปเตอร์สายฟ้าของฉัน เนื่องจากมีระบบรักษาความปลอดภัยอยู่ฉันจึงตระหนักว่าฉันต้องเพิ่มซอฟต์แวร์ความปลอดภัยลงใน VM ของฉัน แต่เนื่องจากไม่ได้เข้าร่วมกับโดเมนนั่นเป็นปัญหา การสลับกลับไปที่ NAT บนอแด็ปเตอร์ไร้สายจากนั้นจะสาธิตปัญหาใน Windows 2016 VM ของฉันอย่างใดทำให้มันเริ่มทำงานได้อย่างน่าอัศจรรย์

เครือข่ายเดียวกัน การกำหนดค่า VM เดียวกัน ซอฟต์แวร์และโฮสต์เดียวกันไม่มีการเปลี่ยนแปลงอะไรที่ฉันสามารถติดตามได้

เมื่อตรวจสอบ Get-ContainerNetwork หรือ Get-WinNat โดยไม่แสดงอะไรเลยฉันก็มาถึงจุดสิ้นสุดของการวินิจฉัยแล้ว การเปลี่ยนอะแดปเตอร์ NIC นั้นจากนั้นเปลี่ยนกลับเป็นสาเหตุทำให้มีบางอย่างรีเซ็ต ช่วงเวลาที่ดี.

ดังนั้นฉันไม่มีคำตอบที่ชัดเจน แต่ฉันมีวิธีแก้ปัญหาที่ดีสำหรับคนต่อไปที่ติดอยู่ในรองเท้าซึ่งทำให้ฉันมีคำถามและคำตอบจาก StackExchange ซึ่งเป็นประวัติการณ์ของฉัน แต่ฉันหวังว่ามันจะช่วยคุณออกไปเช่นกันผู้ถามอินเทอร์เน็ตแบบสุ่ม


และภาษี XKCD สำหรับผู้ที่ไม่สามารถแก้ไขปัญหาได้

XKCD Comic ลิงก์ไปยัง "ภูมิปัญญาของคนโบราณ"


1
ตามคำอธิบายนี้ฉันอยากจะวางบิลแคช DNS โดยการปิด / ไม่ปิดเครือข่ายสแต็คเนื่องจาก Windows มีความคิดแบบนี้เพื่อแคชคำขอลบ หากมันเกิดขึ้นอีกครั้งอาจจะคุ้มค่าที่จะลองipconfig /flushdnsโฮสต์ Windows
Tensibai

หมายถึงการเพิ่มโฮสต์ในกรณีนี้คือ OSX ถ้าคุณหมายถึงระบบปฏิบัติการพื้นฐานที่โฮสต์ทุกอย่าง ถ้าคุณหมายถึงที่ที่ฉันกำลังเรียกใช้คอนเทนเนอร์นักเทียบท่านั่นคือหน้าต่าง
jcolebrand

ผมหมายถึงโฮสต์หน้าต่างผมจำไม่ได้ตาม * nix กองเครือข่ายแคชคำสั่งเชิงลบ
Tensibai

1

ที่พรอมต์คำสั่งให้เรียกใช้ipconfig /allและค้นหาDNS Serversบรรทัดในเอาต์พุตด้วยบางสิ่งที่ดูเหมือนว่าที่อยู่ IP นั่นคือเซิร์ฟเวอร์ DNS ของเครื่องโฮสต์ของคุณ

แก้ไขC:\ProgramData\Docker\config\daemon.jsonและเพิ่มdnsรายการด้วยที่อยู่ IP นั้น ตัวอย่างเช่นหากเซิร์ฟเวอร์ DNS ของคุณคือ 192.10.0.2 และ 8.8.8.8 เป็น DNS ของ Google เป็นข้อมูลสำรอง:

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

ตอนนี้รีสตาร์ท Docker Desktop และ URL ระยะไกลสามารถแก้ไขได้โดย Docker ไม่ว่าจะเป็นที่บิลด์หรือรันไทม์

การแก้ปัญหานี้มาจากซื่อสัตย์ Anere ที่https://medium.com/@faithfulanere/solved-docker-build-could-not-resolve-archive-ubuntu-com-apt-get-fails-to-install-anything-9ea4dfdcdcf2


-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.