Продолжение.Первая часть: Docker. Практика с нуля.
Docker Swarm
Создаем машину-менеджер для роя (кластера):
docker swarm init --advertise-addr 192.168.56.104
На другой машине с установленным Docker запускаем команду для присоединения к созданному кластеру:
docker swarm join --token SWMTKN-1-1s3cqewjavdshw8vilvx03isar5mz47uvrqd1mwdi3y6jjg1ep-2kkxm41217rqhdb4emu82eeuh 192.168.56.104:2377 (соединение между нодами по порту 2377)
docker info -информация о docker на хосте
docker node ls -информация о запущенных нодах кластера Swarm. Запускать нужно на менеджере.
Запуск сервиса на 2 нодах (мастер-нода и нода) с именем helloworld с образом alpine и выполнением команды ping docker.com:
docker service create --replicas 2 --name helloworld alpine ping docker.com
docker service create --replicas 2 --name webnginx -p 80:80 nginx - запуск образа nginx на двух нодах с пробросом на 80 порт
docker service ps helloworld -просмотр на каких нодах работает наш сервис helloworld
docker service rm helloworld -удаление сервиса из кластера
docker swarm leave --force -удалить все ноды из кластера, т.е. убиваем кластер
Docker-compose запуск в режиме кластера (Swarm).
Выполняется командой docker stack. Также нужен файл YML похожий как для Docker-compose, но немного видоизмененный. Перед этим должен быть создан наш мастер Swarm кластера командой docker swarm init --advertise-addr 192.168.56.104 и присоединены ноды командами типа docker swarm join --token SWMTKN-1-1s3cqewjavdshw8vilvx03isar5mz47uvrqd1mwdi3y6jjg1ep-2kkxm41217rqhdb4emu82eeuh 192.168.56.104:2377
Итак команда docker stack.
docker stack deploy -c docker-stack.yml stack1
где
-c docker-stack.yml stack1 -создаем наш кластер из файла docker-stack.yml с именем stack1
Содержимое docker-stack.yml:
version: '3.1'
services:
adminer:
image: vitalyvo/adminerdb
ports:
- 3080:8080
deploy:
replicas: 2
db:
image: vitalyvo/postgresdb
environment:
POSTGRES_PASSWORD: 123
volumes:
- /home/admin1/dockerfolderpg/database:/var/lib/postgresql/data
deploy:
replicas: 1
Для db replicas равна 1 т.к. в нашем случае база данных должна быть только в одном месте.
docker stack services stack1 -посмотреть запущенные сервисы на наших нодах (выполняется только с мастер ноды)
docker stack ls -посмотреть запущенные стеки
docker stack rm stack1 -удалить stack1
[продолжение следует]
|