Fala galera, beleza? Quem trabalha com Containers Docker já deve ter ouvido falar em um tal de Portainer… Mas o que seria o portainer? O Portainer é um gerenciador de ambientes Docker de forma simples e de fácil visualização. O que eu consigo fazer com ele? Subir/Matar containers, gerenciar containers, acompanhar logs, baixar imagens, visualizar seu cluster swarm, suas stacks, services, redes, configurações, secrets, logar no seu registry local ou dockerhub, enfim, da pra fazer muita coisa com essa belezinha. 🙂
É uma ferramenta gratuíta, porém se quiser habilitar algumas features como: autenticação externa (Microsoft, Google, Github e Customizada), gerenciamento de níveis de acesso e algumas outras coisinhas… Caso queira, precisará investir algo de em torno de US$9.95/ano, até que não é tão caro, mas sinceramente nunca tive essa necessidade, sem pagar da pra usufluir bastante da ferramenta…
Neste artigo ensino como utilizar o portainer executando através do comando docker container run e também como subir uma stack do portainer no Docker Swarm, então vamos colocar a mão na massa!
Primeiro vamos criar o diretório onde irá ficar os dados do portainer.
# mkdir data
Agora vamos excutar o portainer.
Entendento os parâmetros:
docker container run
» comando para executar o container.
-d
» para o container rodar em daemon (segundo plano).
-p
» para expor a porta do container no host, ou seja redirecionar a porta 9000 do host para a 9000 do container.
--name
» para dar nome ao container.
--restart always
» reinicia o container caso ele pare.
-v
» utilizando volume persistente, indicando que o diretório data sera montado dentro do container.
/var/run/docker.sock
» deamon do docker, é necessário ter para o Portainer ter acesso a todas as informações de containers, imagens e etc.
portainer/portainer
» imagem do Portainer.
# docker container run -d -p 9000:9000 --name portainer --restart always -v /var/run/docker.sock:/var/run/docker.sock -v ./data:/data portainer/portainer
Vamos verificar se o container subiu direitinho! 🙂
# docker container ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
792e75211677 portainer/portainer "/portainer" 21 minutes ago Up About a minute 0.0.0.0:9000->9000/tcp portainer
Repare que o container está UP.
Se você subiu o container do portainer utilizando docker container run, desça até o tópico: Acessando Portainer.
Primeiro vamos criar o nosso compose file, e subir a nossa stack em no cluster docker swarm.
Compose File é um arquivo YAML para subir uma stack com diversos serviços (containers) do Docker. Então, com o comando docker stack deploy -c docker-compose.yml stackname
, você cria e inicia todos os serviços da sua stack.
Para saber mais sobre o Compose file acesse a https://docs.docker.com/compose/compose-file/ documentação oficial do Docker.
Crie o arquivo utilizando o comando vim e copie e cole o compose abaixo. Quando executamos o portainer no docker swarm ele roda o container portainer/agent em modo global, que será executado em todos os nós do cluster para pegar informação e também para administração.
# vim docker-compose.yml
version: '3.7'
services:
agent:
image: portainer/agent
environment:
AGENT_CLUSTER_ADDR: tasks.agent
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /var/lib/docker/volumes:/var/lib/docker/volumes
networks:
- agent_network
deploy:
mode: global
placement:
constraints: [node.platform.os == linux]
portainer:
image: portainer/portainer
command: -H tcp://tasks.agent:9001 --tlsskipverify
ports:
- "9000:9000"
- "8000:8000"
volumes:
- ./data:/data
networks:
- agent_network
deploy:
mode: replicated
replicas: 1
placement:
constraints: [node.role == manager]
networks:
agent_network:
driver: overlay
attachable: true
Crie o diretório data onde irá armazenar os dados do portainer.
# mkdir data
Subindo a sua stack do Portainer:
# docker stack deploy -c docker-compose.yml portainer
Verificando se a stack do swarm está UP! 🙂
# docker service ls
ID NAME MODE REPLICAS IMAGE PORTS
m15cfxnbqmmr portainer_agent global 1/1 portainer/agent:latest
1xevaytgedpn portainer_portainer replicated 1/1 portainer/portainer:latest *:8000->8000/tcp, *:9000->9000/tcp
# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fb1cc0a1e6ae portainer/portainer:latest "/portainer -H tcp:/…" 14 minutes ago Up 13 minutes 9000/tcp portainer_portainer.1.2d2lhaw3uquoumrdz8kushnjr
e5e50f325cdd portainer/agent:latest "./agent" 14 minutes ago Up 14 minutes portainer_agent.vjgifpyzccg3n3sq8s8u2m2fn.k01nm6tcxlyq2m2bw7uh81n6w
Pronto sua stack com os serviços do portainer está UP! 🙂
Para acessar o portainer, se estiver rodando em seu notebook/pc acesse http://127.0.0.1:9000 ou http://ipdoseuservidor:9000.
Crie um usuário administrador local, e coloque uma senha com mais de 8 caractéres e clique em Create user.
Quem fez com o docker swarm, pule essa parte abaixo, que é somente para quem executou o portainer através do docker container run.
Selecione a opção Local e clique em Connect.
Essa é a cara do nosso amigo portainer. 😀
No menu da esquerda como podem ver temos algumas opções, irei pontuar as que eu mais utilizo.
Dashboard: Exibe um dashboard com a quantidade de stack, serviços, container, imagens, volumes e redes.
Em dashboard clique em Go to cluster visualizer, pra quem utiliza docker swarm é bem legal que você consegue visualizar informação de todos os nós do seu cluster, como eu só tenho um, claro que só irá mostrar um hehe
Agora irei mostrar outra parte que uso bastante que é o menu de Containers, no menu containers, você consegue para, excluir, executar, matar, pausar, iniciar e adicionar containers, além de quando clicar no container, você irá conseguir ver os Logs, inspect, stats, console, attach, aplicar políticas de acesso para somente alguns times do portainer visualizar o container ou a stack, adicionar label, enfim… uma infinidade de opções.
Galera por hoje é só, fiz uma prévia sobre o Portainer bem rápida, quem sabe numa próxima eu gravo um vídeo mostrando todas as funcionalidades dele, mas é bem fácil de utilizar, acredito uma fuçada de uns 10 minutinhos já vão saber utilizar bem a ferramenta.
É isso, se curtiu compartilha com os amigos e siga nossas redes sociais, até a próxima! 😉
Se una com os assinantes de nossa Newsletter, sempre que tiver postagem nova você será notificado.