Как настроить DNS для контейнеров Windows с помощью Docker для Windows? - PullRequest
1 голос
/ 03 октября 2019

Я запускаю контейнеры Windows в Docker для Windows. Мой docker-compose.yml выглядит так:

version: '2.4'
services:
  web:
    image: microsoft/aspnet
    platform: windows
    networks:
      webnet:
        ipv4_address: 172.0.0.2
    ports:
      - "4119:80"
    expose:
      - "80"
    dns:
      - 8.8.8.8
      - 8.8.4.4

networks:
  webnet:
    name: "custom_network"
    ipam:
      config:
        - subnet: 172.0.0.0/16
          gateway: 172.0.0.1

Когда я присоединяю PowerShell и запускаю ping 8.8.8.8, пинг проходит нормально. Но когда я запускаю команду ping для доменного имени, я получаю следующий результат:

PS C:\> ping google.com
Ping request could not find host google.com. Please check the name and try again.

И то же самое для любых других IP / доменов. Таким образом, мой контейнер имеет доступ к Интернету, но не может разрешать доменные имена. В качестве обходного пути я попытался вставить предварительно заполненный файл hosts в контейнер, а затем выполнить ping по доменам из этого файла. Он правильно определяет IP-адрес и получает ответы от удаленного компьютера.

Что я пропустил? Как настроить контейнеры Docker для решения этой проблемы?

Обновление: на моем ПК установлена ​​следующая версия Docker:

> docker version
Client: Docker Engine - Community
 Version:           19.03.2
 API version:       1.40
 Go version:        go1.12.8
 Git commit:        6a30dfc
 Built:             Thu Aug 29 05:26:49 2019
 OS/Arch:           windows/amd64
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          19.03.2
  API version:      1.40 (minimum version 1.24)
  Go version:       go1.12.8
  Git commit:       6a30dfc
  Built:            Thu Aug 29 05:39:49 2019
  OS/Arch:          windows/amd64
  Experimental:     true
> docker-compose version
docker-compose version 1.24.1, build 4667896b
docker-py version: 3.7.3
CPython version: 3.6.8
OpenSSL version: OpenSSL 1.0.2q  20 Nov 2018

1 Ответ

0 голосов
/ 03 октября 2019

Per Здесь вы можете просто установить: -o com.docker.network.windowsshim.dnsservers=<DNS SERVER/S> при создании сети Docker, если это делается из CLI.

Если вы делаете это из файла Docker-compose, см. этот ответ , который рекомендует

  dns:
   - 8.8.8.8
   - 4.4.4.4
   - 192.168.9.45

Или настройку его в самой виртуальной машине для Windows.

...