O documento descreve as funcionalidades e configuração do Docker Swarm e Swarmkit para gerenciamento de clusters de containers Docker. Ele explica como iniciar um cluster Swarm, adicionar nós trabalhadores e gerentes, criar serviços e redes overlay, e testar uma implantação de WordPress e MySQL rodando em containers.
5. Docker Swarm
Docker Swarm e Swarmkit são "AS" ferramentas de gerenciamento de clusters
nativo (Engine 1.12) para containers Docker.
6. Bacanices
● Gerenciamento de cluster integrado com Docker Engine
● Escalável
● Modelo Declarativo de serviço
● Multihost
● Service Discovery
● Balanceamento de carga
● TLS habilitado por padrão
● Rolling Updates
● Compatível com versões anteriores
8. Orquestração de containers
“Automação contínua, scheduling, coordenação e
gerenciamento de sistemas complexos de componentes em
containers e os recursos por eles consumidos"
Karl Isenberg
11. Managers
● Gerencia todos os nós de cluster Swarm
● Algoritmo Raft Consensus
● Managers podem ser usados como Workers
● Não use todos os nós como Managers
● Managers também pode ser Workers
12. Workers
● Workers são os nodes que "rodam" os containers "fim"
● Eles não participam das eleições dos managers
● Eles podem ser promovidos à manager
● Não há um limite de Workers
13. Raft Consensus
Algoritmo para "resolver o problema" de Managers elege o líder
Líder é responsável por enviar o status entre todos os managers
Caso o líder caia, uma nova eleição é realizado com os restantes
21. $docker swarm join
--token TOKEN_SWARM
192.168.99.100:2377
Adicionando um node
22. $docker node ls &&
docker node promote node3 &&
docker node ls
Criando rede wordpress
23. $docker network create --driver overlay wordpress &&
docker network ls
Promovendo um Worker para
Manager
24. $docker service create --name mysql
--network wordpress
--env MYSQL_ROOT_PASSWORD=wordpress
--env MYSQL_DATABASE=wordpress
--env MYSQL_USER=wordpress
--env MYSQL_PASSWORD=wordpress mysql
Wordpress
25. $docker service create --name wordpress
--network wordpress
--env WORDPRESS_DB_HOST=mysql:3306
--env WORDPRESS_DB_PASSWORD=wordpress
--publish 8000:80 wordpress
$docker service ls
MySQL