Docker Swarm
- Node - это наши виртуальные машины, на которых установлен docker. Есть manager и workers ноды. Manager нода управляет workers нодами. Она отвечает за создание/обновление/удаление сервисов на workers, а также за их масштабирование и поддержку в требуемом состоянии. Workers ноды используются только для выполнения поставленных задач и не могут управлять кластером.
- Stack - это набор сервисов, которые логически связаны между собой. По сути это набор сервисов, которые мы описываем в обычном compose файле. Части stack (services) могут располагаться как на одной ноде, так и на разных.
- Service - это как раз то, из чего состоит stack. Service является описанием того, какие контейнеры будут создаваться. Если вы пользовались docker-compose.yaml, то уже знакомы с этой сущностью. Кроме стандартных полей docker в режиме swarm поддерживает ряд дополнительных, большинство из которых находятся внутри секции deploy.
- Task - это непосредственно созданный контейнер, который docker создал на основе той информации, которую мы указали при описании service. Swarm будет следить за состоянием контейнера и при необходимости его перезапускать или перемещать на другую ноду.
Master node
$ docker swarm init $ docker node ls $ docker node rm stage $ docker stack deploy --with-registry-auth -c ./docker-compose.stage.yaml stage $ docker stack ls $ docker stack services stage $ docker service ps --no-trunc stage_back $ docker service inspect stage_back $ docker stack rm stage $ docker service create --name nginx --replicas 3 nginx:alpine $ docker service ps nginx $ docker node update --label-add TAG=stage stage-1 $ docker container ls $ docker secret create back_config example.yaml $ docker secret ls
- stage - HOSTNAME (из docker node ls)
nano ./docker-compose.stage.yaml
version: "3.9" services: back: image: docker-registry.ru:5000/ptm:stage ports: - "4003:4003" environment: TZ: "Europe/Moscow" extra_hosts: - host.docker.internal:host-gateway command: make server_start volumes: - /p/ptm/config/config.yaml:/p/ptm/config/config.yaml - /p/ptm/stat/web:/p/ptm/stat/web
nano ./example.yaml
token: sfsjksajflsf_secret
Node
$ docker swarm join --token SWMTKN-1-...-... 172.31.245.104:2377 $ docker swarm leave