Docker Swarm не может разрешить имя службы в течение 20+ минут после запуска контейнера
У меня есть набор служб, которые я развертываю в Docker Swarm на одном узле через файл docker-compose. Существует определенная услуга, которой другие не могут пользоваться в течение 20+ минут.
- ОС Windows Server 2016 версии 1607 (сборка ОС 14393.2828)
- Docker версия 18.09.3, сборка 142dfcedca
- Контейнеры для окон
Шаги воспроизведения
- Инициировать рой через
docker swarm init
- Развертывание сервисов через
docker stack deploy -c docker-compose.yml stack1
- Наблюдать за статусом сервиса через
docker service ls
- служба запущена (реплицировано 1/1) - Служба наблюдения работает через
docker ps
&docker logs <myServiceContainerId>
- Наблюдайте за контейнером в оверлейной сети через
docker network inspect <networkName>
под контейнерами - Выберите другой контейнер и запустите
docker exec -i <containerId> cmd
- Из этого контейнера запустить
ping tasks.myservice
Ping последовательно терпит неудачу, пока одно из следующего не выполнено:
соблюдать
myservice
IP от неудачного пинга и запуска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
,