После установки запустите службу Docker во время загрузки с помощью следующей команды:
sudo systemctl start docker && sudo systemctl enable docker
Если нужно запускать docker от пользователя:
sudo groupadd docker && sudo usermod -aG docker dockeruser
Перевод 1-ой ноды в режим работы manager (нужно определится на каком адресе будет работать swarm)
docker swarm init --advertise-addr 192.168.0.8
В ответ мы получим:
Swarm initialized: current node (iwjtf6u951g7rpx6ugkty3ksa) is now a manager.
To add a worker to this swarm, run the following command:
docker swarm join --token SWMTKN-1-5p5f6p6tv1cmjzq9ntx3zmck9kpgt355qq0uaqoj2ple629dl4-5880qso8jio78djpx5mzbqcfu 192.168.0.8:2377
To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
Проверка нод в кластере:
docker node ls
Подключение нод к кластеру, только для начала нужно перейти на ноду которую мы хотим добавить в кластер
docker swarm join --token ваш токен
Для перевода ноды в режим обслуживания:
docker node update --availability drain <NODE-ID>
Инспектировать узел для просмотра его доступности:
docker node inspect --pretty worker1
Для возвращения ноды в режим работы:
docker node update --availability active worker1
Для этого переходим на нужную ноду и выполняем команду (данная команда не быстро выполняется)
Это можно сделать через portainer
docker swarm leave
Теперь если перейти на ноду менеджер и сделать инспектирование то мы увидем что нода down.
docker node inspect node3
Теперь когда мы убедились что нода отключена ее можно удалить (удаляем со стороны manager
):
docker node rm node3
Чтобы подключить worker нужно отобразить токен для подключения к менеджер ноде, перейти на worker и подключить к manager:
docker swarm join-token worker
Чтобы добавить менеджера в этот swarm, выполните следующую команду:
docker swarm join-token manager
Действия проводятся на узле manager
Для повышения роли узла/ов до manager
docker node promote node-3 node-2
или
docker node update --role manager node-3
Для понижении роли узла/ов до worker
docker node demote node-3 node-2
или
docker node update --role manager node-1
Чтобы удалить worker1 из swarm, выполните следующую команду из самого worker1
docker swarm leave
Узел по-прежнему будет отображаться в списке узлов и помечен как отключенный. Это больше не влияет на работу роя, но длинный список неработающих узлов может загромождать список узлов. Чтобы удалить неактивный узел из списка, используйте команду node rm
.
Пересоздать swarm из текущей ноды
docker swarm init --force-new-cluster
Стэк собирается через файл stack.yml
Запуск стєка происходит следующим образом (последний аргумент это название стека):
docker stack deploy -c ./stack.yml wp
или
docker stack deploy --compose-file docker-stack.yml nets
Команда выведет название сервиса, а также количество запущенных сервисов.
docker stack ls
Равномерное распределение контейнеров указанного сервиса
docker service update you_service --force
Запуск docker stack с использованием переменных в конфигурационных файлах через docker-compose:
docker stack deploy -c <(docker-compose config) stack-name-here
Для отображения сервисов запущенных на стеке wordpress:
docker stack services wordpress
Для отображения всех запущенных сервисов на стэке:
docker service ls
Команда для отображения задач запущенных в контейнере, а также на какой ноде запущен и состояние контейнера (желаемое и текущее)
docker service ps wordpress_phpmyadmin
Удаление стєка:
docker stack rm wordpress
Отоброзить всю информацию по сервису:
docker service inspect wordpress_phpmyadmin
Отобразит на какой ноде запущен сервис:
docker service ps wordpress_phpmyadmin
Для просмотра логов определенного сервиса на стеке:
docker service logs wikijs_wiki
Отобразить на каких нодах, какие сервисы запущены.
docker node ps
Отобразить работу всех стэков и на каких нодах
docker node ps $(docker node ls -q) --filter desired-state=Running | uniq
или отобразить по определенному кластеру
docker node ps $(docker node ls -q) --filter desired-state=Running | uniq | grep elk6
Вывад будет следуюдщий
h0nn284vywrx \_ elk6_es61.1 elasticsearch:6.4.3 srv-app-log21 Running Running 4 hours ago
bau88uula7ry \_ elk6_es62.1 elasticsearch:6.4.3 srv-app-log22 Running Running 4 hours ago
reua7ud8js1w elk6_es63.1 elasticsearch:6.4.3 srv-app-log23 Running Running 4 hours ago
q2ybj8zo8kw1 \_ elk6_kibana.1 kibana:6.4.3 srv-app-log22 Running Running 4 hours ago
ialmp60v78ii elk6_logstash.1 logstash:6.4.3 srv-app-log23 Running Running 4 hours ago
y4hpmsh2qxyc \_ elk6_logstash.2 logstash:6.4.3 srv-app-log21 Running Running 4 hours ago
h3y5ml3lfnhs \_ elk6_logstash.3 logstash:6.4.3 srv-app-log22 Running Running 4 hours ago
sudo systemctl stop docker
sudo rm -rf /var/lib/docker/swarm
docker node rm <problem-node-name>
docker swarm join-token <worker> or <manager>
docker swarm join --token <token> <manager_ip>:2377
sudo systemctl start docker
docker swarm join --token <token> <manager_ip>:2377