🐝 Docker Swarm

Встроенная оркестрация Docker: кластер, сервисы, стеки, масштабирование.

Шпаргалки · Инфраструктура · #docker #swarm #orchestration

Кластер

docker swarm init --advertise-addr <ip>     # первый узел (manager)
docker swarm join-token worker              # токен для рабочего узла
docker swarm join --token <token> <ip>:2377 # на worker
docker node ls                              # узлы
docker node promote|demote <node>
docker swarm leave [--force]

Порты: 2377/tcp (управление), 7946 (узлы), 4789/udp (overlay).

Сервисы

docker service create --name web --replicas 3 -p 80:80 nginx
docker service ls
docker service ps web
docker service scale web=5
docker service update --image nginx:1.27 web   # плавное обновление
docker service logs -f web
docker service rm web

Стек (compose-файл для Swarm)

services:
  web:
    image: nginx
    deploy:
      replicas: 3
      update_config: { parallelism: 1, delay: 10s }
      restart_policy: { condition: on-failure }
      placement:
        constraints: [node.role == worker]
    ports: ["80:80"]
docker stack deploy -c stack.yaml app
docker stack ls; docker stack services app; docker stack rm app

Сети, секреты и конфиги

docker network create -d overlay net
echo "pass" | docker secret create db_pass -
docker config create nginx_conf ./nginx.conf

В сервисе секрет доступен как файл /run/secrets/db_pass.

Swarm или Kubernetes

Swarm проще и поднимается за минуты, подходит для небольших кластеров. Kubernetes богаче экосистемой, автомасштабированием и поддержкой облаков.