DEV Community

Gabriel Mussolini
Gabriel Mussolini

Posted on

Primeiros passos com docker swarm

Nesse artigo, não irei explicar muita teoria e sim colocar a mão na massa para os primeiros passos com o swarm.

Primeiramente meu nome é Gabriel, e o conteúdo a ser abordado é para iniciantes em containers docker e orquestração com o swarm, vamos utilizar o Play with docker com ele conseguimos simular algumas instâncias com o docker já instalado.

Vamos começar, criando duas instâncias, e rodar no terminal: docker swarm init (aconselho sempre que aprender algum comando novo, digita o — help para ver todas opções possíveis).

1

Note que não foi possível iniciar nosso cluster swarm e o próprio swarm nos avisou que devemos especificar a rede a ser utilizada. No caso vamos utilizar a eth0 que é o ip externo de nossa instância, outro ponto a se atentar é quais portas de acesso devemos liberar, no caso como estamos utilizando PwD já vem configurado.

Digite no terminal: docker swarm init — advertise-addr 192.168.0.23, esse é meu ip o seu certamente será diferente.

2

Note-se que nos foi retornado um comando com um token de acesso, utilizaremos ele para conectar as instâncias nesse nosso cluster criado. Dê um docker node ls no node(instância) que iniciou o swarm, em seguida rode o comando de acesso na outra instância criada, volte para a node leader(iniciou o swarm) e novamente rode o comando docker node ls, agora temos dois nodes, um leader e o outro worker.

Agora com as duas instâncias fazendo parte de nosso cluster, no node leader vamos criar um serviço com o seguinte comando: docker service create — name primeiros-passos -p 8080:80 nginx , no terminal digite docker container ls nas duas instâncias, viu a diferença? temos apenas um container em execução em apenas 1 node.

Volte para o node leader e rode o comando: docker service scale primeiros-passos=4 e depois docker service ls você verá que o numero de replicas passou a ser 4/4, isso quer dizer que existe 4 containers em execução, agora de um docker container ls, legal né, em cada instância existe 2 containers em execução e como estamos com a porta 8080 do container exposta, conseguimos fazer a requisição a esses containers e a cada chamada a requisição cairá em um container diferente.

Enfim, finalizamos a parte prática que queria mostrar nesse artigo, passarei algumas informações a seguir sobre o swarm e containers:

  1. Os containers diminuem diferenças entre ambiente de dev e prod, facilita o deploy, melhorar a produtividade pois é mais rápido a configuração e acabar de vez com o “funciona na sua maquina mas na minha não”.
  2. Em produção precisamos lidar melhor com os containers, ele são feitos para morrer, iniciar outro, então o container não deve manter estados, e para lidar melhor com a inicialização desses containers, trabalhar com micro serviços, alta disponibilidade e resiliência, precisamos orquestrar o comportamento dos containers e o swarm é uma boa ferramenta para isso.
  3. Uma curiosidade sobre os nodes é que o swarm utiliza uma conta simples, que é a divisão dos nodes leaders por dois, caso o resultado seja maior que 51% dos nodes leader totais, ele manterá o cluster rodando, ou seja em produção é recomendado ter sempre um número impar de nodes leader, exemplo: tenho 5 nodes leader, meu cluster estará em execução mesmo que caia até 2 nodes.

Em breve terá mais artigos sobre o swarm, e no final vamos aprender a subir uma aplicação real para produção e manter ela escalável e em alta disponibilidade.

3

Referências

Jeferson Fernando do Linux Tips
Artigo de Cristian Trucco
Documentação do swarm

Top comments (0)