O Docker Swarm é uma ferramenta nativa do Docker que permite a criação de clusters de Docker, sendo assim podendo criar diversos hosts de Docker com o mesmo pool de recursos, facilitando o deploy de containers.
É possível por exemplo criar um container sem necessariamente saber em qual host ele está, pois o Swarm disponibilidade uma API de integração, onde é possível realizar grande parte das atividades administrativas de um container.
Segue abaixo um exemplo de como a estrutura será criada com 2 nodes ao invéis de 3
1) Ambiente
Todas as vms são CentOS 7 .
Hardware – 2 Gbs de RAM , 8 Gbs de HD e 2 vCPUs
10.0.0.21 – Docker Manager
10.0.0.22 – Docker SWARM Worker 1
10.0.0.23 – Docker SWARM Worker 2
O servidor de gerência irá administrar os containers entre o Workers.
2) Requisitos
Será necessário instalar o Docker versão 1.6+
Versão utilizada no lab
Update da base de pacotes do yum
sudo yum check-update
Instação do Docker via script oficial
curl -fsSL https://get.docker.com/ | sh
No final adicione o usuário ao grupo do docker
sudo usermod -aG docker username
Start e definição no boot
systemctl start docker systemctl enable docker
3) Configuração do SWARM
3.1 ) Definição do Manager
Baixando a imagem oficial
docker pull swarm
Crie o cluster e guarde o valor gerado
docker swarm init --advertise-addr 10.0.0.21
Configurando os Nodes do SWARM
docker swarm join \ --token SWMTKN-1-1ynzqw8s9p0ebakl4prgsf1df9ng5okddoiseqr9yf2p50dr5j-e2xv8u07j2j9ogbinhp3sj3bj \ 10.0.0.21:2377
Verifique se o Node está no cluster rodando o comando abaixo no Manager.
docker node ls
4) Deploy do serviço
Em nosso exemplo vamos criar o serviço nginx publicando a porta 81 com 5 replicas .
docker service create --name fajlinux-nginx --replicas 5 --publish 81:81 nginx
Verificando os serviços
docker service ps nginx