Докер для windows: "сервер плохо себя ведет" при попытке вытащить - PullRequest
0 голосов
/ 26 ноября 2018

Я пытаюсь запустить Docker в Windows (ОС: Microsoft Windows 10 Pro 64bit, Docker ver: 18.09.0, сборка 4d60db4), следуя инструкции hello-world здесь .Затем я получил следующую ошибку «неправильная работа сервера»:

Error response from daemon: Get https://registry-1.docker.io/v2/: proxyconnect tcp: dial tcp: lookup <companyProxy> on 192.168.65.1:53: server misbehaving.

Я попытался изменить DNS (в настройках Docker - Сеть - DNS-сервер) с Автоматического на Фиксированный (8.8.8.8 или 8.8.4.4) какпредложил здесь , но все равно не решил проблему и привел к другому типу ошибки («превышен тайм-аут»).

Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers).

Я за прокси-сервером компании и установилпрокси (и учетные данные) как для переменной среды, так и для настройки докера.Я также пытался переустановить и докер, и HyperV, но все равно получил ту же проблему.

Кто-нибудь может помочь?Спасибо

Ответы [ 3 ]

0 голосов
/ 30 ноября 2018

Я принял вышеуказанный ответ, но по неизвестной причине проблема снова возникла через несколько дней с несколько иной ошибкой.К счастью, мне удалось решить эту проблему с помощью другой установки, как написано ниже.Надеюсь, что это может помочь кому-то, когда принятый ответ не работает.

Прежде всего, условие, при котором возникает эта ошибка: CNTLM слушает 127.0.0.1:3128, прокси-сервер докера (установленный через GUI) равен 127.0.0.1:3128 обадля HTTP и HTTPS

Error response from daemon: Get https://registry-1.docker.io/v2/: proxyconnect tcp: dial tcp 10.0.75.1:3128: connect: connection refused

Я проверил аналогичный случай , но решение также не сработало для меня.Я пробовал несколько разных вещей, включая отключение брандмауэра и воспроизведение исходной проблемы (мой первоначальный вопрос) и повторение принятого решения, но безрезультатно.Я понял, что указанный в ошибке IP-адрес - это не мой корпоративный прокси-сервер, не прослушиваемый порт Cntlm и не мой localhost, а IP-адрес dockerNAT.

Затем я также заметил, что при запуске CNTLM -g -v, ниже линии Cntlm ready, staying in the foreground, при запуске docker pull hello-world (в другом терминале) ничего не появляется.

Вдохновленный этим ответом , я попытался изменить Cntlm.ini и настройку прокси в docker на 10.0.75.1:3128, а затем перезапустил cntlm и docker.Теперь все немного изменилось.Сообщение об ошибке изменилось на следующее:

Error response from daemon: Get https://registry-1.docker.io/v2/: Parent proxy unreacheable

, и теперь терминал Cntlm что-то показывает, когда я нажимаю на команду docker pull, указывая, что она как-то работает.Я подозревал, что на этом этапе может возникнуть проблема с именем прокси-хоста, поскольку Docker может не иметь доступа к DNS-серверу с виртуальной машины.Затем я снова изменил Cntlm.ini, изменив имя хоста прокси на его IP-адрес, и вуаля , теперь docker pull hello-world работает нормально!

(TBH я неполностью понять теорию сетей, объясняющую, почему это решение работает. Если кто-то может дать какое-то объяснение, это было бы полезно.)

0 голосов
/ 05 декабря 2018

Я столкнулся с той же проблемой с Windows 10 (Host OS) + VMware + Ubuntu.

В моем случае проблема вызвана брандмауэром компании.

На всякий случай вы можете столкнуться с той же проблемой.Я написал статью об этом:

Решить: Docker pull - "... Тайм-аут рукопожатия TLS"

0 голосов
/ 27 ноября 2018

Тайм-аут в вашей последней конфигурации вызван тем, что вы не получаете доступ через прокси к этим внешним DNS-серверам (8.8.8.8 - 8.8.4.4), я думаю.

Вы должны решить первую проблему, будучи server misbehaving.Как и в случае со мной, упомянутое здесь , это было вызвано невозможностью Docker аутентифицироваться с прокси-сервером.Мое решение состояло в том, чтобы использовать cntml .

Конфигурация cntlm на самом деле очень проста, если вы следуете их указаниям.Когда у вас запущен cntlm, вам нужно настроить докер для использования его в качестве прокси вместо вашего корпоративного прокси.Простой прокси-сервер без аутентификации - скорее всего, 127.0.0.1:3128, если вы используете его на той же машине.cntlm будет обрабатывать аутентификацию на корпоративном прокси.

Для справки я использовал конфигурацию cntlm:

Username        <username>
Domain          <domain>
Password        <password>

PassLM          <PassLM output of cntlm -H>
PassNT          <PassNT output of cntlm -H>
PassNTLMv2      <PassNTLMv2 output of cntlm -H>

Proxy           <corporate proxy>:<corporate proxy port>
NoProxy         localhost, 127.0.0.*, 10.*, 192.168.*, 172.16.*.*

Listen          3128

Вы получаете хеши, запустив cntlm -H -u <username>@<domain>.

Убедитесь, что вы запускаете cntlm в режиме шлюза cntlm -g (вместо cntlm -v).

Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...