Windows Server Core Docker Проблема с сетью контейнеров - PullRequest
3 голосов
/ 01 апреля 2020

У меня есть 2 контейнера, созданные с помощью docker, составьте со следующими настройками:

docker -compose.yml Файл:

version: "3.7"
services:
    web:
        image: img_web
        container_name: cont_web

    svcs:
        image: img_svcs
        container_name: cont_svcs
        depends_on:
            - web

Dockerfile для img_web:

FROM mcr.microsoft.com/dotnet/framework/aspnet:4.8-windowsservercore-ltsc2019
WORKDIR /inetpub/wwwroot

Dockerfile для img_svcs:

FROM mcr.microsoft.com/dotnet/framework/aspnet:4.8-windowsservercore-ltsc2019
WORKDIR /inetpub/wwwroot

После docker-compose up -d и из контейнера cont_svcs я могу до:

  1. Ping cont_web по IP

  2. Ping cont_web по имени хоста (идентификатор контейнера: bf4001be1e84 сгенерирован автоматически.)

НО Я не могу пропинговать контейнер cont_web по его псевдониму (web)

Я проверил оба контейнера, я вижу в сетевых разделах следующее:

"Networks": {
            "test_default": {
                "IPAMConfig": null,
                "Links": null,
                "Aliases": [
                    "bf4001be1e84",
                    "web"
                ],
...

Оба контейнера подключены к драйверу 'test_default'.

Примечание: даже я не могу пропинговать веб-машину по ее псевдониму "web" в пределах сама машина.

Буду очень признателен за вашу помощь и обратную связь.

Спасибо Сэм

Ответы [ 2 ]

1 голос
/ 06 апреля 2020

Это потому, что разрешение Netb ios работает для основного имени. Вы можете попытаться добавить 2-е имя Netb ios через реестр: https://www.techrepublic.com/blog/the-enterprise-cloud/adding-multiple-netbios-names-for-windows-servers/

в качестве альтернативы, я бы порекомендовал сделать 2-ю запись Cname в DNS и выполнить разрешение с помощью stati c имена (могут быть неприемлемы для ваших docker контейнеров)

1 голос
/ 03 апреля 2020

Попробуйте добавить явную сеть NAT для использования в своем развертывании. Чтобы сделать это, добавьте следующее в конец вашего docker -compose файла-

networks:
  default:
    external:
      name: nat

Теперь попробуйте пропинговать сервисы с их именем сервиса.

Если это не так Возможно, на вашем локальном компьютере установлено приложение Security Firewall или Inte rnet Security, которое, скорее всего, блокирует службы DNS dockerd.exe . Попробуйте реализовать некоторые правила, чтобы разрешить порты TCP и UDP для служб на основе docker.

Также вы можете попробовать этот обходной путь для правильного разрешения DNS- https://github.com/docker/for-win/issues/1976#issuecomment -418151244

...