Настройка сетей 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 nginxHost Mode
Порт открывается только на той ноде, где запущен контейнер. Полезно, если вы сами балансируете трафик или используете мониторинг.
docker service create --publish mode=host,target=80,published=80 nginxТипичные ошибки
| Ошибка | Симптом | Решение |
|---|---|---|
| Одна overlay-сеть для всего | Frontend видит БД напрямую | Создать отдельные сети: frontend-net, backend-net |
Нет --attachable для docker run | could not attach to network | Overlay по умолчанию только для сервисов. --attachable для standalone контейнеров |
| Порты 4789/7946 закрыты файрволом | Overlay не работает между хостами | Открыть: TCP/UDP 7946 (gossip), UDP 4789 (VXLAN) |
| Encryption без оценки overhead | Скорость сети упала на 30% | --opt encrypted шифрует VXLAN. Использовать только для sensitive трафика |