Как настроить Docker для Windows для отправки с использованием файла hosts для репозитория

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

docker push docker:5000/m2
The push refers to a repository [docker:5000/m2]
Put http://docker:5000/v1/repositories/m2/: dial tcp: lookup docker on 192.168.65.1:53: no such host

Если я использую curl -vvv для URL-адреса с помощью babun, я получаю следующее:

curl -vvv http://docker:5000/v1/repositories/m2/
* STATE: INIT => CONNECT handle 0x20048188; line 1034 (connection #-5000)
* Added connection 0. The cache now contains 1 members
*   Trying 192.168.1.8...
* STATE: CONNECT => WAITCONNECT handle 0x20048188; line 1087 (connection #0)
* Connected to docker (192.168.1.8) port 5000 (#0)
* STATE: WAITCONNECT => DO handle 0x20048188; line 1229 (connection #0)
> GET /v1/repositories/m2/ HTTP/1.1
> User-Agent: Mozilla/5.0 (Windows; U; MSIE 9.0; WIndows NT 9.0; en-US))
> Host: docker:5000
> Accept: */*
>
* STATE: DO => DO_DONE handle 0x20048188; line 1314 (connection #0)
* STATE: DO_DONE => WAITPERFORM handle 0x20048188; line 1441 (connection #0)
* STATE: WAITPERFORM => PERFORM handle 0x20048188; line 1454 (connection #0)
* Increasing bytecount by 7 from hbuflen

* nread <= 0, server closed connection, bailing
* STATE: PERFORM => DONE handle 0x20048188; line 1626 (connection #0)
* Connection #0 to host docker left intact
* Expire cleared

Поскольку я получаю сообщение об ошибке локально, но не при использовании curl, и, учитывая сообщение об ошибке, похоже, что мой локальный экземпляр докера Windows не разрешается в имя хоста docker.


person Kevin Schroeder    schedule 27.02.2017    source источник
comment
Вы используете VPN?   -  person andreaspfr    schedule 27.02.2017
comment
У меня есть VPN на удаленной машине. Но я могу без проблем делать входящие HTTP, SSH и тому подобное.   -  person Kevin Schroeder    schedule 27.02.2017


Ответы (1)


Docker нажимает на удаленный демон Docker, а не на локальный клиент Docker, что означает, что разрешение DNS должно работать в этой системе. Это также включает любые настройки прокси. Также была недавняя ошибка, которая, по крайней мере, затронула Docker для Mac, а возможно, и Windows, где он не использовал локальный DNS-сервер. Я полагаю, что это было исправлено в версии 1.13.1, но я уже работал над этим, добавляя нужные мне записи в файл /etc/hosts (я полагаю, что Windows по-прежнему помещает это в system32\drivers\etc).

Обратите внимание, что после того, как вы измените настройки DNS на хосте Windows, чтобы разрешить работу разрешения имен, вам, вероятно, потребуется перезапустить демон Docker, чтобы встроенная виртуальная машина перезапустилась с этими изменениями.

person BMitch    schedule 27.02.2017
comment
Он работает в CLI в Windows (я использую Babun, который редактирует файл system32/etc/hosts) для других программ. Telnet, например, работает. - person Kevin Schroeder; 27.02.2017
comment
Я также должен отметить, что когда я использую tcpdump в системе репозитория, я вижу трафик telnet, но ничего не вижу от клиента докера. - person Kevin Schroeder; 27.02.2017
comment
Команда выполняется на сервере, а не на клиенте, поэтому вы не должны видеть никакого клиентского трафика. Все, что изменяет файл /etc/hosts после запуска виртуальной машины докера, не будет видно виртуальной машине, вам нужно отбросить виртуальную машину докера, чтобы это изменение было принято. - person BMitch; 27.02.2017
comment
Итак, я создаю контейнер на своем локальном рабочем столе, и отправка его в мой удаленный репозиторий не должна приводить к отсутствию трафика? - person Kevin Schroeder; 27.02.2017
comment
Вы не создаете образы на клиенте докера, вы создаете их на механизме докера. Клиент является фронтендом для REST-интерфейса, изображения там не хранятся. - person BMitch; 27.02.2017
comment
Хорошо, но это упускает из виду то, что я пытаюсь проработать. Я инициирую отправку на свой локальный экземпляр, и он не может добраться до моего удаленного экземпляра. - person Kevin Schroeder; 28.02.2017
comment
Да, на что я ответил выше. Из ваших комментариев не ясно, предпринимали ли вы какие-либо попытки следовать какому-либо из данных советов. По крайней мере, сведения о том, какую версию Docker вы используете, настройки файлов DNS и /etc/hosts в родительской ОС и перезапускали ли вы службу Docker (ВМ) с момента последнего изменения сети. - person BMitch; 28.02.2017
comment
Да. Несколько раз. Версия: 1.13.1. - person Kevin Schroeder; 28.02.2017