Docker Swarm — Cheatsheet

Справочник: Все команды Docker Swarm CLI + best practices управления кластером.

Cluster Management

КомандаОписание
docker swarm initИнициализировать кластер (текущая нода станет лидером).
docker swarm joinПрисоединить ноду к кластеру (нужен токен).
docker swarm join-token [worker/manager]Показать токен для присоединения.
docker node lsСписок всех нод.
docker node update --availability drain <id>Вывести ноду из эксплуатации (убрать задачи).

Service Management

КомандаОписание
docker service createСоздать новый сервис.
docker service lsСписок сервисов.
docker service ps <n>Показать задачи (контейнеры) конкретного сервиса.
docker service scale <n>=5Изменить количество реплик.
docker service update --image <img:tag> <n>Обновить образ сервиса (Rolling Update).
docker service logs <n>Посмотреть логи.

Stack Management

КомандаОписание
docker stack deploy -c file.yml <n>Развернуть стек.
docker stack lsСписок стеков.
docker stack rm <n>Удалить стек.

Best Practices

Менеджеры

  • Количество: Всегда нечётное число (1, 3, 5). 3 — золотой стандарт.
  • Ресурсы: Не нагружайте менеджеры приложениями. Переведите в Drain:
    docker node update --availability drain <manager-node>

Безопасность

  • Секреты: Используйте docker secret вместо ENV переменных.
  • TLS: Swarm шифрует управляющий трафик по умолчанию. Включите шифрование данных (--opt encrypted) для overlay-сетей.

Развёртывание

  • Tags: Никогда не используйте :latest в продакшене. Фиксируйте версии (:v1.2.3).
  • Limits: Всегда задавайте лимиты ресурсов в deploy.resources:
    deploy:
      resources:
        limits:
          cpus: '0.50'
          memory: 512M