Docker Swarm не может разрешить имя службы в течение 20+ минут после запуска контейнера

У меня есть набор служб, которые я развертываю в Docker Swarm на одном узле через файл docker-compose. Существует определенная услуга, которой другие не могут пользоваться в течение 20+ минут.

  • ОС Windows Server 2016 версии 1607 (сборка ОС 14393.2828)
  • Docker версия 18.09.3, сборка 142dfcedca
  • Контейнеры для окон

Шаги воспроизведения

  1. Инициировать рой через docker swarm init
  2. Развертывание сервисов через docker stack deploy -c docker-compose.yml stack1
  3. Наблюдать за статусом сервиса через docker service ls - служба запущена (реплицировано 1/1)
  4. Служба наблюдения работает через docker ps & docker logs <myServiceContainerId>
  5. Наблюдайте за контейнером в оверлейной сети через docker network inspect <networkName> под контейнерами
  6. Выберите другой контейнер и запустите docker exec -i <containerId> cmd
  7. Из этого контейнера запустить ping tasks.myservice
  8. Ping последовательно терпит неудачу, пока одно из следующего не выполнено:

    • соблюдать myserviceIP от неудачного пинга и запуска ping <myServiceIP>, Это успешно, и я могу запустить пинг tasks.myservice успешно идет вперед.

    • Подождите более 20 минут, пока проблема не решится сама собой, и снова запустите ping tasks.myservice из другого контейнера. Это успешно.

Я что-то упускаю из-за этого странного поведения?

Пример docker-compose:

services:
  myService:
      image: containerRegistry/image:tag

  otherService:
      image: containerRegistry/image:tag
      environment:
        - MyServiceAddress=tasks.myservice

Я обнаружил, что с вышеуказанной настройкой ping tasks.stackname_myservice возвращается успешно. Если я изменю docker-compose, чтобы указать tasks.stackname_myservice вместо tasks.myservice Я могу пинговать task.myservice успешно, но не tasks.stackname_myservice,

0 ответов

Другие вопросы по тегам