Після встановлення запустіть службу Docker під час завантаження за допомогою наступної команди:
sudo systemctl start docker && sudo systemctl enable docker
Якщо потрібно запускати docker від користувача:
sudo groupadd docker && sudo usermod -aG docker dockeruser
Переведення першої ноди в режим роботи 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 години тому
bau88uula7ry \_ elk6_es62.1 elasticsearch:6.4.3 srv-app-log22 Running Running 4 години тому
reua7ud8js1w elk6_es63.1 elasticsearch:6.4.3 srv-app-log23 Running Running 4 години тому
q2ybj8zo8kw1 \_ elk6_kibana.1 kibana:6.4.3 srv-app-log22 Running Running 4 години тому
ialmp60v78ii elk6_logstash.1 logstash:6.4.3 srv-app-log23 Running Running 4 години тому
y4hpmsh2qxyc \_ elk6_logstash.2 logstash:6.4.3 srv-app-log21 Running Running 4 години тому
h3y5ml3lfnhs \_ elk6_logstash.3 logstash:6.4.3 srv-app-log22 Running Running 4 години тому
sudo systemctl stop docker
sudo rm -rf /var/lib/docker/swarm
docker node rm <problem-node-name>
docker swarm join-token <worker> або <manager>
docker swarm join --token <token> <manager_ip>:2377
sudo systemctl start docker
docker swarm join --token <token> <manager_ip>:2377