Хотя я встречал и другие вопросы по этой теме, ни один из них не кажется достаточно близким к тому, с чем я сталкиваюсь. Вот информация о моей версии Docker в моем Swarm:
Server: Docker Engine - Community
Engine:
Version: 19.03.8
API version: 1.40 (minimum version 1.12)
Go version: go1.12.17
Git commit: afacb8b
Built: Wed Mar 11 01:25:42 2020
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.2.13
GitCommit: 7ad184331fa3e55e52b890ea95e65ba581ae3429
runc:
Version: 1.0.0-rc10
GitCommit: dc9208a3303feef5b3839f4323d9beb36df0a9dd
docker-init:
Version: 0.18.0
GitCommit: fec3683
Я пытался использовать stack для развертывания из файла docker-compose, в котором я использую определяемую пользователем оверлейную сеть (например: docker network create -d overlay some_network --attachable ), и пока все мои Службы находятся в стадии разработки, я наблюдаю последовательное поведение моих Рабочих, использующих сеть докеров, проверяющую some_network, что перечисленные контейнеры перечисляют только одну из Служб в развертывании (есть 3 сервиса по 1 задаче). В разделе peers проверки сети последовательно отображаются все рабочие.
Как ни странно, если я выполняю docker service ps service_name, я вижу, что службы распределяются между моими рабочими. Затем выполните docker service inspect service_name, и то, что я вижу для раздела Networks, - это идентификатор созданной пользователем оверлейной сети, а также в разделе VirtualIPs есть IP-адрес в созданном пользователем оверлее. CIDR сети, а также IP-адрес для входа. Выполнение этого для каждой развернутой службы приводит к схожим результатам: к каждой из них присоединена оверлейная сеть вместе с IP-адресом внутри оверлейной сети.
Есть идеи, почему это происходит и как исправить? Дайте мне знать, если вы все хотите, чтобы я предоставил файл docker-compose.yml.