Как заставить Docker Desktop Windows разрешать имя хоста?

Предположим, моя машина называется workstation-mine.company.network с IP 10.11.12.13.

Я не могу разрешить его из любого контейнера Docker, Edge версии 2.0.3.0 (с Kubernetes в фоновом режиме), например:

docker run -it --rm busybox
ping workstation-mine.company.network

выдает сообщение "Неверный адрес", но

ping workstation-somebody-else.company.network
ping www.google.com

работают нормально, IP адрес разрешен. Я также могу пинговать свой IP 10.11.12.13, хотя время отклика значительно больше, чем у pinging host.docker.internal.

Используя nslookup, я могу преобразовать имена всех ближайших рабочих станций в сети компании в IP-адреса, кроме моего:

nslookup workstation-mine.company.network
** server can't find workstation-mine.company.network: NXDOMAIN

nslookup 10.11.12.13
** server can't find 13.12.11.10.in-addr.arpa: NXDOMAIN

Установка докера выполняется в довольно большом скрипте, который я просто использую, и использование `host.docker.internal 'нежелательно, потому что местом назначения для доступа также может быть другая машина.

Есть один обходной путь: присвоить моей машине собственное имя, например "my-host", и отредактировать его в файле Windows \ system32 \ drivers \ etc \ hosts. Потом ping my-host из контейнера работает.

Кстати,

Не знаю, связано ли это, но я продолжаю получать ошибки DNS в журнале ProgramData \ DockerDesktop \ Service.txt:

[14:31:31.414 impression[ApiProxy] [Info] time = "2019-03-26T14: 31: 31 + 01: 00" msg = "неизвестный тип запроса DNS 13" [14: 31: 31.414] [ ApiProxy] [Info] time = "2019-03-26T14: 31: 31 + 01: 00" msg = "Ошибка DNS: 1160493135005290919.1659836570884043770. \ TIN \ t HINFO: неизвестный тип запроса"

а также

[15:40:08.358 impression[ApiProxy] [Info] time = "2019-03-26T15: 40: 08 + 01: 00" msg = "Ошибка DNS: docker-desktop. \ tIN \ t AAAA: errno 9002: DnsQuery: сбой DNS-сервера "

Первая ошибка DNS, похоже, связана с каким-то необычным, указанным как устаревшим типом строки HINFO с сервера имен, вторая - с IP v6 (AAAA означает IP v6).


person Erik Hart    schedule 26.03.2019    source источник
comment
У меня такая же проблема, и я создал проблему для этого в gihub-трекере докера для окон: github.com/docker/for-win/issues/3810   -  person Stefan Großmann    schedule 25.04.2019


Ответы (2)


Я столкнулся с той же проблемой. Я могу пинговать 8.8.8.8 через:

docker run mcr.microsoft.com/dotnet/core/sdk:3.0-nanoserver-1803 ping 8.8.8.8

но не может пинговать google.com или какие-либо домены.

Затем я пытаюсь найти виртуальную сеть, которую использует контейнер:

docker run mcr.microsoft.com/dotnet/core/sdk:3.0-nanoserver-1803 ipconfig /all

Затем я замечаю, что сеть каким-то образом использует неправильные интерфейсы, что я не подключаюсь в то время, что настроено на неправильный DNS из VPN моей компании.

Наконец, я нахожу DNS Suffix в Registry Editor, удаляю целые папки, содержащие имя, и перезапускаю весь докер. DNS снова работает.

Здесь вы можете найти сетевые интерфейсы:

Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces

ipconfig / all

person Hieu Le    schedule 07.12.2019

К сожалению, разрешение локального имени хоста, похоже, не работает в последних выпусках Docker для Windows (пока что до 2.1.0.1)

Единственное возможное решение, которое я нашел, - это перейти на Докер для Windows 2.0.0.3

Осторожно: вам необходимо удалить текущую установку, чтобы установить выпуск 2.0.0.3. Таким образом, вы потеряете все свои данные (контейнеры, изображения и т. Д.)

В Github есть связанная проблема, созданная Стефаном Гросманном: Не удается разрешить имя хоста в Docker Desktop Windows # 3810

person Filipp Shestakov    schedule 04.09.2019