Docker Swarm com Portainer

Linda Ines
Quick Mobile Labs
Published in
4 min readMar 2, 2017

Não é segredo pra ninguém (e se for, agora não é mais) que nós aqui na Quick respiramos deploy contínuo.

Temos a convicção que foi uma excelente escolha nos dedicarmos tanto nessa arquitetura baseada em Docker, microservices, cloud, filas (te amamos RabbitMQ), dev-ops (rumo ao no-ops :D). E cá entre nós, o que são as pequenas dores de cabeça com monitoramento de serviços, gerenciamento de containers e afins perto da possibilidade de escalar ao infinito, não é mesmo?

Como nem tudo são flores, algumas coisas precisam ser revistas. Vou contar uma história bem curta pra vocês.

Era uma vez uma equipe de desenvolvimento que dedicou grande parte do seu trabalho em 2016 pra deixar o deploy e o gerenciamento das aplicações o mais simples possível. E o negócio ficou sério quando eles começaram a usar um tal de Rancher.

Graças a ele, hipoteticamente, uma equipe de suporte desprovida de grande (ou nenhum) conhecimento técnico, passou a conseguir muito bem subir uma nova versão, escalar containers e dar um rollback maroto quando acontece aquela zebra. Ok, preciso ser honesta. Se minha avó de 90 anos tivesse permissão, ela mesma pode atualizar o sistema enquanto joga paciência (são míseros 3 cliques para tal).

Só que uma boa história sempre tem uma reviravolta. Mas pra não detonar o nosso querido Rancher, vamos apenas dizer que o orquestrador de containers dele não é lá essas coisas… Nem mesmo a galera do Rancher recomenda o uso do Cattle.

Então o pessoal do dev decidiu que realmente seria necessário trocar de orquestrador e decidiu usar o Swarm (depois de uma longa saga que eu vou te contar…). Beleza, como dizer pra equipe de suporte (e pra minha vó) que agora é necessário descobrir qual host a aplicação está deployada, fazer ssh e aprender uns comandos do docker (o que pra eles é um bicho de sete cabeças) porque o orquestrador do tal do rancher é ruim?

Abrir mão da usabilidade em prol de coisas mais importantes como Load Balancer, escalabilidade e service discovery confiável parece muito cabível pra nós. Entretanto, tirar o rancher (sinceridade agora: a telinha) das pessoas que já tinham se acostumado com ele vai ser uma tarefa bastante complicada.

Moral da história… Aqui nós gostamos de resolver problemas e pra tentar não abrir mão de uma UI intuitiva e começar a usar o Swarm lhes apresento o portainer.io.

Já na sua definição ele parece ter sido feito pra nós:

The Easiest Way To Manage Docker. Portainer is an open-source, lightweight management UI which allows you to easily manage your docker host or swarm cluster

O Portainer é uma continuação do projeto UI For Docker (que foi depreciado em 2016). A essa altura do campeonato o segundo já foi reescrito, principalmente pela necessidade de se adaptar a novas funcionalidades do docker, como o Swarm Mode.

Sem mais histórias, vamos colocar o portainer pra rodar:

docker run -d — name portainer \
-p 9000:9000 \
-v /var/run/docker.sock:/var/run/docker.sock \
portainer/portainer

Feito isso vamos acessar a porta 9000 da máquina em que o comando acima foi executado.

Basta definir uma senha pro admin e vida que segue. Na tela principal temos algumas informações sobre nosso cluster.

Em App templates, tempos a possibilidade de configurar um serviço de uma maneira bastante prática (bem parecido com o Rancher).

Também podemos parar, pausar, remover, criar novos containers…

E por aí vai… Informações sobre rede, volumes e Swarm (se você tiver um) também estão disponíveis.

Uma observação importante é que o Portainer pode ser iniciado como um serviço dentro do Swarm. Basta que o seguinte comando seja rodado:

docker service create \
— name portainer \
-p 9090:9000 \
— constraint ‘node.role == manager’ \
— mount type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock \
portainer/portainer -H unix:///var/run/docker.sock

Pra terminar, eu diria que o Portainer faz aquilo que promete na sua descrição e realmente é uma das melhores (se não for a melhor) UI pra docker no momento. Com ele podemos investir no Swarm, sem perder a cultura do deploy em 3 cliques.

Vamos aguardar as cenas dos próximos capítulos… Até :)

--

--

Linda Ines
Quick Mobile Labs

Tech Lead at Cedro Technologies | Software Engineer | Scrum Master