Buscar

Portainer: o que é, como funciona e CE x Business

O que é Portainer? A interface web que gerencia containers Docker, Swarm e Kubernetes pela tela. Como instalar, CE x BE e o risco do socket.

Gabriel Pedroso11 min de leitura
O que é Portainer?

O Portainer coloca todo o gerenciamento de containers numa tela, mas ele não substitui o Docker: ele senta em cima dele. Quem entende isso usa o painel como camada de visualização e controle e continua sabendo o que roda por baixo. Quem trata a interface como mágica trava no primeiro problema que só o terminal resolve.

Ele é uma interface web (GUI) para gerenciar ambientes Docker, Docker Swarm e Kubernetes. O motor que roda os containers continua sendo o Docker. A interface traduz containers, imagens, volumes, redes e stacks em telas clicáveis, e poupa você de decorar comandos. O fluxo do começo ao fim é este:

1Sobe o containerdocker run do portainer-ce publicando a porta 9443
2Conecta o ambientemonta o docker.sock (local) ou usa o agent (remoto)
3Visualizacontainers, imagens, volumes e redes num painel único
4Faz deployStacks em sintaxe Compose e serviços pela UI
5Controla acessousuários, times e permissões sobre os recursos
O Portainer não substitui o Docker: ele é a camada visual por cima. Você sobe o container do próprio Portainer, conecta o ambiente e passa a operar tudo pela interface.

Como o Portainer funciona: ele mesmo roda como container

A parte que confunde quem está começando é que ele não é um programa que você "instala" no sistema operacional. Ele roda como um container Docker e monta o socket do próprio Docker para enxergar e controlar o que está no host. A instalação é um comando só:

docker run -d \
  -p 8000:8000 -p 9443:9443 \
  --name portainer \
  --restart=always \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v portainer_data:/data \
  portainer/portainer-ce:lts

Três detalhes explicam o comando inteiro:

  • -p 9443:9443 publica a interface em HTTPS com um certificado autoassinado que o próprio container gera. A porta 8000 é o túnel TCP usado pelos Edge Agents em ambientes remotos. A porta 9000 (HTTP) é legada e nem entra nesse comando: a documentação de instalação só a abre se você acrescentar -p 9000:9000.
  • -v /var/run/docker.sock:/var/run/docker.sock é o que dá acesso ao daemon do Docker. Sem isso, a interface sobe vazia e não gerencia nada.
  • -v portainer_data:/data persiste usuários, configurações e ambientes num volume nomeado, para que nada se perca quando o container for recriado.

Depois de subir, você abre https://SEU-IP:9443, cria o usuário administrador e conecta o ambiente Docker local. Para gerenciar outras máquinas, você instala um agent (ou Edge Agent) no host remoto, e com isso evita expor o socket direto na rede.

Arquitetura: server, agent e Edge Agent

A instalação tem duas peças. O server é o container que você acabou de subir, com o banco no volume nomeado. O agent é um container leve que roda em cada host que você quer administrar de fora.

O agent existe para você não precisar abrir a API do Docker na rede. Ele fala com o Docker local pelo socket Unix e nem aceita conexão TCP com o daemon, segundo a documentação do agent. O server o encontra na porta 9001, por HTTPS.

Quando o host remoto fica atrás de NAT ou de firewall que você não controla, entra o Edge Agent: quem procura o server é o agent, pelo túnel da porta 8000. É o caso de filial e de máquina na borda.

O que o Portainer gerencia

O painel cobre os mesmos objetos que você manipularia via CLI, só que de forma visual e centralizada:

RecursoO que você faz pela interface
ContainersCriar, iniciar, parar, remover, inspecionar, ver logs e abrir um console dentro do container
ImagensBaixar do Docker Hub ou de um registry privado, listar, remover e ver camadas
VolumesCriar e apagar volumes, revisar o que está ocupando espaço
RedesCriar redes, conectar containers e inspecionar a topologia
StacksFazer deploy de um docker-compose colando o YAML direto na tela
AmbientesAlternar entre Docker local, Swarm e clusters Kubernetes num só lugar

Stacks: deploy de docker-compose pela tela

Stacks é o nome dado a um conjunto de serviços descrito em formato docker-compose. São quatro caminhos para criar uma, de acordo com a documentação de stacks: colar o YAML no editor web, enviar um arquivo stack.yml do seu computador, apontar para um repositório Git ou usar um template que você mesmo salvou.

A opção de Git é a que muda o jeito de trabalhar. Você guarda o compose no repositório, indica a branch e o caminho do arquivo, e liga a atualização por polling ou por webhook: o deploy passa a ser consequência de um commit.

Duas pegadinhas valem anotar. Em Swarm, o env_file não funciona, porque o docker stack deploy não suporta esse campo, e você declara cada variável na mão. E a stack criada pela tela fica sob controle dela: editar o arquivo por SSH no host gera divergência na próxima atualização.

Se você nunca subiu um compose, o caminho mais curto é montar um WordPress com Docker pelo terminal e depois colar o mesmo YAML aqui.

Swarm e Kubernetes no mesmo painel

Docker standalone é só o caso mais simples. No Docker Swarm, o agent roda como serviço em modo global, com uma tarefa em cada nó, e você cadastra apenas o manager: o cluster inteiro aparece a partir dele. A documentação do agent em Swarm traz o comando e o mesmo requisito de porta 9001 entre as máquinas.

No Kubernetes, a tela mostra namespaces, deployments, services, ingresses e volumes, com um formulário para publicar aplicação sem escrever manifesto. Dá para conectar k3s, bare metal e os gerenciados de AWS, Azure e Google.

A troca é clara: você ganha velocidade no operacional e perde parte do vocabulário do Kubernetes. Nem todo recurso do cluster aparece na tela, e o kubectl continua necessário para CRD e RBAC fino.

Portainer CE vs Business Edition

São duas edições. A CE é open source e dá conta da maioria dos casos; a BE é comercial e só começa a cobrar acima de 3 nós.

AspectoCommunity Edition (CE)Business Edition (BE)
LicençaOpen source, gratuitaComercial, gratuita até 3 nós
Gestão de containersCompletaCompleta
Controle de acessoUsuários e timesRBAC granular com papéis customizados
AutenticaçãoInterna e OAuthInterna, OAuth, LDAP/AD e SSO
AuditoriaBásicaLogs de atividade detalhados
SuporteComunidadeSuporte oficial do fornecedor

A BE é gratuita para 3 nós e, acima disso, o plano Starter custa US$ 1.045 por ano para 5, 10 ou 15 nós, com até 16 vCPUs por nó, segundo a página de preços oficial. Para uso não comercial existe a licença Home & Student, e um teste estendido cobre 15 nós por 45 dias.

O que trava na CE é o controle de acesso. Usuários e times existem, mas papel customizado por recurso, sincronização de usuários do Active Directory, template pronto de SSO e log de autenticação exportado por syslog ficam na BE.

Para um homelab, um VPS ou um servidor de estúdio pequeno, a CE dá conta com folga. A BE faz sentido quando vários times mexem no mesmo cluster e o suporte precisa ver logs sem poder derrubar container.

Segurança: montar o docker.sock dá poder total

Este é o ponto que mais gente ignora e que eu não deixaria passar em produção. Ao montar o /var/run/docker.sock, o container ganha controle sobre o daemon do Docker, e quem controla o daemon controla o host. Um container com acesso ao socket pode subir outro container privilegiado, montar o sistema de arquivos da máquina e escapar do isolamento. Ou seja: deixar esse painel aberto na internet é o mesmo que deixar o host aberto.

Isso pede alguns cuidados mínimos:

  • Nunca deixe a interface aberta na internet sem autenticação e sem HTTPS: mantenha na 9443, atrás de firewall, VPN ou rede interna.
  • Trate a senha do administrador como uma credencial de root, porque é isso que ela é.
  • Para hosts remotos, prefira o agent a expor o socket ou a API do Docker direto na rede.
  • O volume de dados do server entra na sua rotina de backup como dado de produção, porque é ali que moram usuários, times e ambientes.

Esse risco vem de qualquer ferramenta que gerencia o Docker pelo socket. A documentação de segurança do Docker é direta: só usuários de confiança devem poder controlar o daemon, e um container que alcance a API do daemon pode escalar privilégio.

Portainer ou linha de comando?

A interface não torna o terminal obsoleto; ela muda quando cada um vale mais a pena. Se você está aprendendo containers, vale entender antes o Docker na prática e depois somar a interface por cima.

SituaçãoMelhor caminho
Deploy repetível, versionado, em CI/CDLinha de comando / docker compose
Inspecionar o estado, ver logs, apagar o que sobrouInterface web
Onboarding de quem não é da infraInterface web
Depurar um problema profundo de rede ou permissãoLinha de comando
Gerenciar vários hosts sem trocar de SSHInterface web

Os dois convivem: a interface acelera o operacional visual e a visão geral, e o CLI continua imbatível para automação e para o momento em que algo quebra de verdade.

Perguntas frequentes sobre o Portainer

A ferramenta é gratuita?

Sim. O Community Edition (CE) é gratuito e open source. O Business Edition (BE) é comercial e sai de graça para até 3 nós; acima disso o plano Starter custa US$ 1.045 por ano para 5, 10 ou 15 nós. A BE adiciona RBAC granular, log de atividade, mais opções de autenticação e suporte oficial.

Funciona apenas com Docker?

Não. Além do Docker standalone, ele gerencia clusters Docker Swarm e ambientes Kubernetes (EKS, AKS, GKE, k3s, bare metal). Você conecta vários ambientes no mesmo painel e alterna entre eles.

Preciso saber linha de comando para usar a interface?

Para operar o dia a dia, não: subir, parar, inspecionar containers e fazer deploy de stacks é tudo pela interface. Mas para instalar o próprio server você roda um comando docker run, e problemas mais profundos ainda vão exigir o terminal. A UI reduz a dependência do CLI sem eliminá-la.

Dá para usar em produção com segurança?

Sim, desde que configurado com cuidado. Acesse sempre pela porta 9443 (HTTPS), habilite o controle de acesso por usuários e times e trate a exposição do painel como sensível. O ponto mais delicado é o /var/run/docker.sock montado no container: quem controla esse socket controla o host inteiro, então restrinja quem chega ao painel.

A interface substitui o Docker?

Não. É uma camada de gestão por cima do Docker (ou do Swarm e do Kubernetes). O motor que constrói imagens e roda containers continua sendo o Docker; a camada de cima só oferece uma forma visual de operar esse motor.

Conclusão

A ferramenta dá visibilidade e controle sobre containers sem obrigar todo mundo a decorar comandos. Ela roda como um container, administra Docker, Swarm e Kubernetes pela porta 9443 e entrega, na CE gratuita, quase tudo que um homelab ou um servidor de PME precisa. Duas lembranças separam quem usa bem de quem se machuca: o motor por baixo continua sendo o Docker, e o socket montado dá poder total sobre a máquina.

Para os comandos e detalhes de instalação sempre atualizados, a referência é a documentação oficial.

Ferramentas citadas neste post

  • Docker Compose: Ferramenta oficial do Docker para descrever vários contêineres num arquivo YAML e subir tudo com um comando. Para devs e times de infraestrutura.
  • lazydocker: Painel no terminal para gerenciar contêineres Docker e serviços do docker-compose: logs, métricas, reinício e limpeza sem decorar comandos.