Gerenciamento eficiente de infraestrutura Docker com Portainer.io
O gerenciamento de uma infraestrutura com docker se dá quase que exclusivamente via terminal, mas quando surge a necessidade de apresentar a infraestrutura para a equipe, ou para toda a empresa, chegamos ao consenso que uma tela preta com letrinhas brancas não é algo chamativo.
A Portainer.io criou então uma aplicação web de código livre que permite ver toda sua infraestrutura no seu navegador WEB, e não só isso, ela também permite gerenciar containers e realizar manutenções de forma simples e prática. Outra funcionalidade bem bacana são as integrações nativas com repositórios on-line, como GitHub e GitLab, assim o gerenciamento da sua infraestrutura através do seu código fica muito mais intuitivo e pode promover conhecimento de sua equipe sobre toda a infraestrutura, com telas e informações via web.
Instalação
Para instalar o portainer basta acessar o site portainer.io para ter acesso a todas as instruções de instalação, utilizando qualquer sistema operacional suportado pela aplicação. Em nosso ambiente utilizaremos como base um Linux na distribuição OpenSuse. Para a segurança da aplicação será necessário criar um volume para que os dados sejam persistidos no container, desse modo, mesmo que por algum motivo o container seja perdido, seus dados estarão sempre salvos em um volume local, essa ação permite que você tenha sempre as informações de sua estrutura independente do container.
Vamos criar o volume?
1 | $ docker volume create portainer_data |
Volume portainer_data criado com sucesso!
Agora podemos iniciar o container da nossa aplicação com o comando abaixo:
1 | $ docker run -d -p 9000:9000 -p 9443:9443 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:2.9.3 |
Configuração
Iniciamos nossa aplicação, agora podemos então acessar nossa interface web no endereço http://{ip-do-container/ou ip-externo}:9000 e começaremos a configurar nosso ambiente!
Logo no primeiro acesso a aplicação solicita para criarmos um usuário administrador e de uma senha forte para este novo usuário

Tela de criação de usuário
Nesta página também é possível restaurar um backup gerado de outro portainer, essa situação é muito importante quando temos ambientes remotos o que o torna bastante oneroso uma nova configuração.
Após a criação do usuário a página de configuração inicial é exibida, nela vamos conectar ao ambiente docker, que pode ser local ou também pode ser ambientes remotos, para nosso laboratório utilizaremos a opção de escolha por ambiente local.

Tela inicial
Assim que clicamos em adicionar o sistema identifica o ambiente e faz uma varredura por toda infraestrutura e traz para nós quantas Stacks possuímos, quantos containers existem, quantos estão ativos e quantos estão parados, nesta página serão exibidos em forma de card todos os ambientes que você está gerenciando através dessa instância.

Página Home
O Portainer se destaca pela forma como são apresentadas as informações, de maneira simples ele cria um dashboard com informações resumidas de todo ambiente, muitas informações são exibida nesse Dashboard como informações de volumes e de imagens, quantidade de Stacks e quantidade de redes criadas.

Dashboard Portainer
Automação
Para mostrar como essa ferramenta não é somente uma interface bonitinha o Portainer consegue automatizar e gerenciar seus containers, através da Stack você pode criar Deploys de suas aplicações versionando seus arquivos em repositórios online, criar templates customizados, ou realizando um upload de seu arquivo compose para dentro do Portainer manualmente através de um upload.
Chega de teoria e vamos para a prática!
Vamos construir algumas aplicações e colocar para nosso Portainer realizar o deploy através de uma nova stack, neste arquivo teremos um WordPress, MySQL e o JuiceShop.
O template padrão do Portainer só consegue ler arquivos em formato YAML, portanto não se esqueçam de salvar o arquivo com a extensão correta.
Copie e cole este código dentro desse arquivo criado:
07 | - db_data:/var/lib/mysql |
10 | MYSQL_ROOT_PASSWORD: somewordpress |
11 | MYSQL_DATABASE: wordpress |
12 | MYSQL_USER: wordpress |
13 | MYSQL_PASSWORD: wordpress |
18 | image: wordpress:latest |
20 | - wordpress_data:/var/www/html |
25 | WORDPRESS_DB_HOST: db |
26 | WORDPRESS_DB_USER: wordpress |
27 | WORDPRESS_DB_PASSWORD: wordpress |
28 | WORDPRESS_DB_NAME: wordpress |
31 | image: bkimminich/juice-shop |
33 | - "3000:3000" |
38 | wordpress_data: {} |
Com o arquivo salvo podemos voltar para nossa aplicação, no menu lateral vamos selecionar a opção Stack e clicar em Add Stack.

Stack List
Somos apresentados ao formulário de criação da Stack, nesta seção vamos preencher as informações para o deploy de nossas aplicações:
- No campo Name daremos o nome para nossa Stack e sempre lembrando de utilizar letras minúsculas e somente os caracteres “_” e “-” são permitidos;
- Em Build Method informaremos como serão inseridos as instruções para o deploy, neste caso como utilizaremos nosso arquivo criando anteriormente, escolheremos a opção Upload;
- Em Environment variables são informadas as variáveis de ambientes, dependendo de sua aplicação algumas variáveis globais são necessárias para que tenham interações entre elas, para nosso laboratório deixaremos o padrão;
- A opção Access Control é onde definiremos quem poderá ter acesso a esta Stack, podem ser adicionados grupos ou pessoas para visualização ou até mesmo para gerenciar suas Stacks, em nosso teste definiremos somente o grupo Administrators.

Add Stack
Após o deploy você terá todas as usas aplicações rodando em sua Stack, podendo realizar alterações no compose e adicionando novos usuários que poderão ter acesso à esta estrutura via interface web.

Stack details
Conclusão
Montamos um ambiente pequeno e apenas para o teste prático do funcionamento do Portainer, mas já conseguimos ver o quão poderosa essa ferramente pode ser e há inúmeras funcionalidades que você pode explorar e deixar ainda mais observável sua estrutura de virtualização com o docker.
Líder em Treinamento e serviços de Consultoria, Suporte e Implantação para o mundo open source. Conheça nossas soluções:
CURSOSCONSULTORIA