CallMarx.dev

Hoje eu aprendi: Gerenciar dockers locais com Portainer CE

03-09-2021 2 minutos de leitura.
Portainer + Docker Logo

Mesmo não sendo um especialista, e tendo bem claro isso, ficou óbvio que definitivamente sou um entusiasta de contêineres. Hoje me deparei com a minha partição root do Linux quase cheia e por qual motivo? Inúmeras imagens, volumes e contêineres, que a maior parte eu nem estava mais utilizando, ocupando grande parte do espaço. Eis que o Google me sugere o mamão com mel que é Portainer CE.

Primeiro de tudo

Ok vai… Isso de encher minha root por conta do docker já tinha ocorrido outras vezes, confesso. O que fazia era excluir tudo e então baixar novamente o que fosse precisar. Até porque os projetos em que atuo (pessoais e do trabalho) estão todos com docker compose e até um make file com os comandos pra subir tudo bonitinho, podem me julgar. Acho legal fazer essa “limpeza” de tempos em tempos, então segue o comando por sua conta e risco

$ docker container stop $(docker container ls --all -q)  # para todos os containers
$ docker system prune -a -f --volumes                    # exclui tudo, CUIDADO!

Cuidado: Com esses comandos você vai EXCLUIR TODOS OS contêineres, imagens e volumes da onde for executado.

Mamão com mel

Para “instalar” o Portainer CE você precisa de duas linhas de comando, essa GUI é ironicamente executada em docker :)

$ docker volume create portainer_data
$ docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce

O primeiro comando cria um volume que será utilizado pelo Portainer que é executado pelo segundo comando. Nada mais preciso ser feito, basta acessar o endereço http://localhost:9000/. No primeiro acesso ele vai pedir o pra você criar um login de acesso, pessoalmente não ligo isso, ponho qualquer coisa, afinal é para uso pessoal e local para desenvolvimento.

Você deve ver algo assim na home se tudo der certo: Portainer Home

Já passei por isso

Talvez você não obtenha um endpoint listando seus contêineres, volumes e imagens, com uma notificação “Object not found inside the database”, algo como a imagem a seguir.

Portainer Error

Depois de pesquisar um pouco encontrei a solução aqui. Bastou limpar o Storage de http://localhost:9000 do meu navegador. No chromium você faz isso em “Application > Storage > Clear site data”. Como eu não soube fazer isso de cara (e ninguém têm obrigação de saber), fiz o screenshot abaixo para mostrar esse cominho.

Clear Storage

Por agora, é isso.