Linux Servidor linux Dev ops

Administrando containers Docker com Portainer

Administrando containers Docker com Portainer

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!

Utilizando Portainer com o comando docker container run

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.

Utilizando Portainer com Docker Swarm

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! 🙂

Acessando o Portainer

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.

image

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.

image

Essa é a cara do nosso amigo portainer. 😀

image

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.

image

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

image

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.

image

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! 😉

Referências:

https://portainer.readthedocs.io/en/stable/deployment.html

comments powered by Disqus

Assine nossa Newsletter! 🐧

Se una com os assinantes de nossa Newsletter, sempre que tiver postagem nova você será notificado.