Настройка сетей Swarm

TL;DR: Overlay-сети связывают контейнеры на разных хостах. Создаются на менеджере, автоматически распространяются на воркеры при деплое сервиса.

Создание Overlay сети

Стандартная сеть для общения сервисов между нодами:

docker network create --driver overlay my-net

Шифрованная сеть (Encrypted)

Если ваши ноды общаются через публичный интернет (или вы хотите Zero Trust), включите шифрование (IPSec):

docker network create --driver overlay --opt encrypted my-secure-net

Внимание: Это создает небольшую нагрузку на CPU.

Публикация портов (Publish)

Ingress Mode (По умолчанию)

Порт открывается на всех нодах кластера.

docker service create -p 80:80 nginx

Host Mode

Порт открывается только на той ноде, где запущен контейнер. Полезно, если вы сами балансируете трафик или используете мониторинг.

docker service create --publish mode=host,target=80,published=80 nginx

Типичные ошибки

ОшибкаСимптомРешение
Одна overlay-сеть для всегоFrontend видит БД напрямуюСоздать отдельные сети: frontend-net, backend-net
Нет --attachable для docker runcould not attach to networkOverlay по умолчанию только для сервисов. --attachable для standalone контейнеров
Порты 4789/7946 закрыты файрволомOverlay не работает между хостамиОткрыть: TCP/UDP 7946 (gossip), UDP 4789 (VXLAN)
Encryption без оценки overheadСкорость сети упала на 30%--opt encrypted шифрует VXLAN. Использовать только для sensitive трафика