Tidak dapat terhubung ke chocolatey.org atau situs internet lainnya dari dalam wadah

11

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

Perilaku yang diharapkan

Saya menjalankan Windows Server 2016 Datacenter (unduhan MSDN) 64 bit - Versi 1607 - Build 14393.1715

Saya menggunakan Docker Untuk Windows dan menjalankan Wadah Windows.

Saya pikir ini adalah hal termudah di dunia, untuk melakukan ini:

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

Harapannya adalah untuk menginstal cokelat di wadah.

Saya sebenarnya akan melakukan ini di dockerfile, tapi saya akan contoh kerja minimum untuk mendapatkan bantuan sekarang.

Inilah file buruh pelabuhan aktual yang gagal (sayangnya, tidak begitu kreatif)

FROM microsoft/windowsservercore

SHELL ["Powershell"]

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

Perilaku yang sebenarnya

Hal pertama yang pertama: Saya menjalankan ini di VM Virtualbox. Semua hal lain yang saya ingin bekerja berfungsi, termasuk tetapi tidak terbatas pada: konektivitas dan pengujian jaringan internal, menjalankan sql server, layanan WCF yang berjalan melawan lingkungan yang menyusun docker saya, data kembali dengan benar. Semua hal yang saya harapkan dilakukan oleh sistem bekerja. Ini adalah langkah terakhir, sematkan: D. Fakta bahwa saya menjalankan ini di VirtualBox seharusnya tidak masalah, karena Hyper-V berfungsi dan semua mesin saya berfungsi seperti yang diharapkan. Saya pikir itu layak disebut.

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

Dari OS host saya (Server 2016) saya memiliki informasi ini:

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>

Informasi

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

Sistem Informasi

Menjalankan Windows Server Datacenter (unduhan MSDN) 64 bit - Versi 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

Jika, untuk alasan apa pun yang diabaikan ini penting, OS host harus diaktifkan. Saya melakukan ini di lingkungan dev satu-shot jadi tidak terlalu khawatir tentang mengaktifkan VM dulu. Saya tidak dapat memahami betapa pentingnya hal ini. Terutama karena yang lainnya "hanya bekerja".

jcolebrand
sumber
Sepertinya ada masalah serupa yang diposting di sini github.com/docker/for-win/issues/427 Cobalah menghentikan dan memulai layanan buruh pelabuhan.
PrestonM
1
Terima kasih @ PrestonM saya melakukan itu berkali-kali. Dan reboot komputer. Dan dapatkan-netnat | hapus-netnat
jcolebrand
running Stop-Service docker; Get-ContainerNetwork | Remove-ContainerNetwork -Force; Start-Service dockermenyajikan beberapa masalah. tidak ada layanan yang ditemukan dengan nama buruh pelabuhan. tidak ditemukan jaringan kontainer dengan Get-ContainerNetwork
jcolebrand
dari mana Anda menjalankan perintah? Virtualbox, atau Windows Server?
PrestonM
1
@ PrestonM Sedikit bingung. Biarkan saya rekap pengaturan saya: OSX Host -> VirtualBox -> Windows Server 2016 -> Docker untuk Windows -> kontainer. Tumpukan semua berjalan pada lapisan Hyper-V, dan saya dapat melakukan semua hal lain yang saya tanyakan pada wadah saya, termasuk komunikasi jaringan internal antara aplikasi dan instance basis data lokal (microsoft / mssql-server-windows-developer) sehingga semua yang saya inginkan lakukan itu baik-baik saja. Perintah sedang dikeluarkan dalam istilah PowerShell pada wadah. Server2016 dapat mencapai denda internet.
jcolebrand

Jawaban:

5

Masalahnya tampaknya bahwa gambar Windows mengkonfigurasi DNS untuk pertama-tama menjadi gateway default dari antarmuka NAT, dan kemudian DNS dari mesin host. Pencarian DNS gagal terhadap resolver pertama dan akses eksternal.

Menambahkan --dns 8.8.8.8(atau resolver lokal Anda) ke CLI tampaknya mengatasi masalah tersebut.

Steven Murawski
sumber
Itu luar biasa. Siapa yang bisa mendapatkan ini di jaminan untuk resolusi? : D
jcolebrand
@ jcolebrand Hai, saya juga menghadapi masalah yang sama. Saya memiliki konfigurasi proxy perusahaan. Di mana kita perlu menambahkan konfigurasi dns itu? Di daemon.json?
user2301
Apakah Anda mencoba perintah seperti yang ditunjukkan dalam jawaban ini?
jcolebrand
@ jcolebrand Mencoba dengan docker build --dns 8.8.8.8 -t choco .tidak berhasil. Lalu saya menambahkan "dns": ["8.8.8.8"]di daemon.json tidak bekerja.
user2301
1
Saya pikir flag dns sedang dijalankan bukan di build?
jcolebrand
2

Karena komentar bersifat sementara, berikut adalah beberapa info untuk orang berikutnya yang mencoba menyelesaikan masalah ini. Silakan mengedit jawaban ini untuk memberikan rincian lebih lanjut, kecuali jika Anda seorang Docker untuk Windows pro, dalam hal ini tolong berikan jawaban yang lebih baik: D

Saya pergi untuk mendemonstrasikan masalah untuk grup IT saya setelah mengubah NIC saya pada VM saya menjadi bridged dan menambahkan adaptor thunderbolt saya. Karena ada sistem keamanan di sana, saya menyadari bahwa saya perlu menambahkan perangkat lunak keamanan ke VM saya, tetapi karena tidak bergabung ke domain, itu adalah masalah. Mengalihkannya kembali ke NAT pada adaptor wifi, dan kemudian akan mendemonstrasikan masalah di VM Windows 2016 saya entah bagaimana secara ajaib membuatnya mulai bekerja.

Jaringan yang sama. Konfigurasi VM yang sama. Perangkat lunak dan host yang sama, tidak ada perubahan apa pun yang dapat saya lacak.

Setelah memeriksa Get-ContainerNetwork atau Get-WinNat yang tidak menunjukkan apa-apa, saya benar-benar berada di ujung diagnosa saya. Mengubah adaptor NIC dan kemudian mengubahnya kembali rupanya menyebabkan sesuatu diatur ulang. Waktu yang baik

Jadi, saya tidak punya jawaban yang solid, tapi saya punya solusi yang baik untuk orang berikutnya yang terjebak di sepatu saya, yang, mengingat catatan jejak saya tentang pertanyaan dan jawaban StackExchange, akan menjadi saya. Tapi saya harap ini membantu Anda juga, penanya internet acak.


Dan pajak XKCD, bagi mereka yang tidak mungkin untuk memecahkan masalah.

Tautan Komik XKCD ke "Wisdom of the ancients"

jcolebrand
sumber
1
Menurut uraian ini, saya tergoda untuk menempatkan tagihan pada cache DNS yang dihapus oleh shut / no shut dari tumpukan jaringan karena Windows memiliki ide semacam ini untuk cache permintaan negatif juga. Jika itu terjadi lagi, mungkin patut dicoba ipconfig /flushdnspada host windows
Tensibai
Dimaksudkan untuk menambahkan, tuan rumah dalam hal ini adalah OSX, jika Anda maksud OS dasar hosting semuanya. Jika maksud Anda di mana saya menjalankan wadah buruh pelabuhan, itu adalah windows.
jcolebrand
Maksud saya host windows, saya tidak ingat tumpukan jaringan * nix berbasis caching permintaan negatif
Tensibai
1

Pada command prompt jalankan ipconfig /alldan cari DNS Serversgaris di output dengan sesuatu yang terlihat seperti alamat IP. Itu server DNS mesin host Anda.

Edit C:\ProgramData\Docker\config\daemon.jsondan tambahkan dnsentri dengan alamat IP itu. Misalnya, jika Server DNS Anda adalah 192.10.0.2 dan 8.8.8.8 adalah DNS Google sebagai cadangan:

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

Sekarang restart Docker Desktop dan URL jarak jauh dapat diselesaikan oleh Docker, baik saat build atau runtime.

Solusi ini datang dari Faithful Anere di https://medium.com/@faithfulanere/solved-docker-build-could-not-resolve-archive-ubuntu-com-apt-get-fails-to-install-anything-9ea4dfdcdcf2

sussexrick
sumber
-1

Coba instruksi pemasangan dari https://chocolatey.org/install#completely-offline-install (bagian "Menginstal di belakang 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
sumber
1
Anda menjawab pertanyaan yang berbeda di sini, pertanyaannya adalah mengapa wadah itu tidak dapat menyelesaikan alamat internet
Tensibai