Неможливо підключитися до chocolatey.org або будь-якого іншого веб-сайту з контейнера


12

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

Очікувана поведінка

Я запускаю Центр обробки даних Windows Server 2016 (завантаження MSDN) 64 біт - версія 1607 - збірка 14393.1715

Я використовую Docker для Windows і запускаю контейнери Windows.

Я вважаю, що це найпростіша річ у світі:

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

Для цього потрібно встановити шоколадний шоколад.

Я насправді роблю це в докерфайлі, але я збираюся на мінімальний робочий приклад, щоб отримати допомогу прямо зараз.

Ось фактичний файл докера, який виходить з ладу (це не так креативно, на жаль)

FROM microsoft/windowsservercore

SHELL ["Powershell"]

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

Фактична поведінка

Перш за все: я запускаю це у віртуальній віртуальній машині. Все інше, над чим я хочу працювати, включаючи, але не обмежуючись цим: внутрішню мережеву підключення та тести, запуск сервера 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

У моїй хост-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 (завантаження 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

Якщо з будь-якої залишеної причини це важливо, хост ОС потрібно активувати. Я роблю це в середовищі одноразових розробників, тому ще не особливо хвилювалась активацією VM. Я не можу зрозуміти, як це важливо. Тим більше, що все інше "просто працює".


Схоже, існує подібна проблема, розміщена тут github.com/docker/for-win/isissue/427 Спробуйте зупинити та запустити послугу докера .
PrestonM

1
Дякую @PrestonM Я робив це багато разів. І перезавантажили комп’ютер. І get-netnat | delete-netnat
jcolebrand

біг Stop-Service docker; Get-ContainerNetwork | Remove-ContainerNetwork -Force; Start-Service dockerпредставляє пару питань. не знайдено служби з докер-іменем. не знайдено контейнерних мереж з Get-ContainerNetwork
jcolebrand

звідки ви запускаєте команду? Virtualbox чи Windows Server?
PrestonM

1
@PrestonM Трохи розгублений. Дозвольте мені зробити резюме моєї настройки: OSX Host -> VirtualBox -> Windows Server 2016 -> Docker для Windows -> контейнер. Цей стек працює на шарах Hyper-V, і я можу робити все інше, що я прошу на своїх контейнерах, включаючи внутрішню мережеву комунікацію між додатками та локальним екземпляром бази даних (microsoft / mssql-server-windows-developer), тому все, що я хочу робити - це добре. Команди видаються на контейнері терміном оболонки повноважень. Сервер2016 може отримати штраф в Інтернеті.
jcolebrand

Відповіді:


6

Проблема полягає в тому, що образи Windows налаштовують DNS спочатку як шлюз за замовчуванням інтерфейсу NAT, а потім DNS хост-машини. Збій DNS-пошуку не вдався до цього першого дозволу та зовнішнього доступу.

Додавання --dns 8.8.8.8(або локального рішення) до CLI, здається, вирішує проблему.


Це круто. Хто може отримати це на відсталі для вирішення? : 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
Я подумав, що прапор ДНС працює не на будівництві?
jcolebrand

2

Оскільки коментарі є тимчасовими, ось деяка інформація для наступної людини, яка намагається вирішити цю проблему. Будь ласка, відредагуйте цю відповідь, щоб надати більш детальну інформацію, якщо ви не Docker для Windows, і в цьому випадку, будь ласка, дайте кращу відповідь: D

Я вийшов на демонстрацію проблеми для своєї ІТ-групи після того, як змінив мій NIC на моєму VM на мостове і додав мій адаптер громовідводу. Оскільки існують системи безпеки, я зрозумів, що мені потрібно додати програмне забезпечення для безпеки в свій VM, але оскільки він не приєднався до домену, це була проблема. Повернення його назад до NAT на адаптері Wi-Fi, а потім перегляд демонстрації проблеми в моєму Windows VM якось магічно змусив її почати працювати.

Та ж мережа. Та ж конфігурація VM Те саме програмне забезпечення та хост, жодних змін, які я можу відстежити.

Перевіривши Get-ContainerNetwork або Get-WinNat, що нічого не показують, я дійсно був у кінці діагностики. Зміна цього адаптера NIC, а потім його повернення назад, очевидно, призвело до перезавантаження. Хороші часи.

Отже, у мене немає твердої відповіді, але я маю добрий спосіб вирішити наступну людину, що застрягла в моєму взутті, яка, враховуючи мою послугу запитань та відповідей StackExchange, буде мені. Але я сподіваюся, що це допоможе вам і випадкового запитувача в Інтернеті.


І податок XKCD, для тих, хто неможливо вирішити проблеми.

Комічний посилання XKCD на "Мудрість давніх"


1
Відповідно до цього опису, я спокушаюсь внести рахунок у кеш DNS, очищений закритим / не закритим мережевим стеком, оскільки Windows має таку ідею також кешувати негативний запит. Якщо це повториться, можливо, варто спробувати ipconfig /flushdnsна хості Windows
Tensibai

Маю на увазі додати, що в цьому випадку хостом є OSX, якщо ви маєте на увазі базову ОС, яка розміщує все. Якщо ви маєте на увазі, де я запускаю контейнер докера, це вікна.
jcolebrand

Я маю на увазі хост Windows, я не пам'ятаю * мережеві стеки на основі nix
кешують

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 як під час збирання, так і під час виконання.

Це рішення надійшло від Вірного Анера за адресою 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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.