Oi Pessoal,
Hoje queremos trazer para vocês mais uma das ferramentas que o Docker disponibiliza em seu ecossistema, chegou a hora de conhecermos o Docker Swarm. O Docker Swarm é uma ferramenta nativa do Docker que permite a criação de clusters de Docker, ou seja, podemos fazer com que diversos hosts de Docker estejam dentro do mesmo pool de recursos, facilitando assim 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. Quer ver na prática?
Requisitos:
- Estar com a versão 1.6+ do Docker
- Abrir a API do Docker para o Swarm Manager
Mãos a obra:
1 – Baixando a imagem oficial:
$ docker pull swarm
2 – Criando o cluster:
$ docker run --rm swarm create
4765653423fdecsdfe875954a6e2h78ed #
O retorno desse comando será o ID do Cluster, armazena essa informação pois será importante nas próximas etapas.
3 – Adicionando nós ao cluster:
$ docker run -d swarm join --addr=<node_ip:2375> token://4765653423fdecsdfe875954a6e2h78ed
4 – Configurando o Manager:
$ docker run -d -p <porta_manager>:2375 swarm manage token://4765653423fdecsdfe875954a6e2h78ed
Lembrando que <porta_manager> será a porta que você utilizará para se comunicar com o Swarm Manager, responsável pela administração do cluster, a arquitetura ficará da forma como a imagem abaixo:
5 – Verificando o Cluster:
$ docker -H tcp://ip:porta_manager> info
O retorno será algo parecido com isso:
Containers: 0
Nodes: 3
agent-2: 172.31.0.1:2375
└ Containers: 0
└ Reserved CPUs: 0 / 1
└ Reserved Memory: 0 B / 514.5 MiB
agent-1: 172.31.0.2:2375
└ Containers: 0
└ Reserved CPUs: 0 / 1
└ Reserved Memory: 0 B / 514.5 MiB
agent-0: 172.31.0.3:2375
└ Containers: 0
└ Reserved CPUs: 0 / 1
└ Reserved Memory: 0 B / 514.5 MiB
Você pode enfrentar alguma dificuldade relacionada a TLS, principalmente se estiver apenas testando, para resolver isso basta executar: unset DOCKER_TLS_VERIFY, com isso não será verificado se os hosts possuem acesso via TLS ativado.
Para administrar seu cluster (criar containers, etc) basta utilizar o IP e Porta do Swarm Manage, dessa forma:
$ docker -H tcp://<manager_ip:manager_port> info
$ docker -H tcp://<manager_ip:manager_port> run ...
$ docker -H tcp://<manager_ip:manager_port> ps
Para listar os nós que fazem parte do cluster, bata utilizar o comando abaixo:
$ docker run --rm swarm list token://4765653423fdecsdfe875954a6e2h78ed
172.31.0.1:2375
172.31.0.2:2375
172.31.0.3:2375
É claro que isso é apenas o início, tendo o cluster montado é possível criar filtros de identificação por tipo de serviço, isso é muito útil para criar containers com o mesmo tipo de serviço em um mesmo local sem a necessidade de saber onde. Mas isso é história para um próximo post
Fique atento as novidades do Blog, e ajude divulgando o mundodocker.com.br.
Abraço!