Podman — Guia Prático e Completo

Este guia foi escrito com ajuda do ChatGPT, e revisado por mim em 30/12/2025.
O Podman resolve containers do jeito certo:
sem daemon, sem root obrigatório, sem gambiarra histórica.
Se você entender este guia, você não precisará do Docker.
1. Instalação no Debian
No Debian Testing (Trixie) ou Stable recente:
sudo apt update
sudo apt install podman
Confere:
podman --version
Se não responder, o erro é humano — não arquitetural.
2. Conceitos Fundamentais (o coração do Podman)
Containers não são mágica. São quatro ideias simples.
█ Imagem (image)
-
É o molde.
-
Sistema de arquivos + bibliotecas + dependências.
-
Imutável.
-
Fica salva localmente após o
podman pull. -
Pode ser reutilizada para criar quantos containers quiser.
-
Exemplos:
debian:bookworm,debian:buster,node:20,postgres:16. -
Analogia: receita do bolo.
▓ Contêiner (container)
-
É a execução de uma imagem.
-
Efêmero por definição. Vive enquanto o processo principal vive.
-
Se você sair do shell ou o processo terminar, o container morre.
-
Tudo que não estiver em volume é perdido.
-
Analogia: o bolo pronto.
░ Volume
-
Persistência de dados.
-
Vive fora do container.
-
Sobrevive à destruição do container.
-
Pode ser:
-
diretório do host (bind mount)
-
volume nomeado do Podman
-
Nada é salvo automaticamente: só persiste o que o programa gravar no caminho montado.
-
Analogia: a geladeira. O bolo sai, o conteúdo fica.
▒ Serviço (Compose)
-
Descrição declarativa de containers.
-
Define imagem, volumes, portas, nome, rede.
-
Um arquivo YAML sobe tudo de uma vez.
-
Podman usa isso via
podman-compose. -
Analogia: o pedido escrito para o padeiro não errar.
Ciclo completo
imagem → contêiner → volume (persistência)
Imagem não muda.
Container nasce e morre.
Volume é a única memória.
3. Imagens: download, armazenamento e reutilização
Quando você faz:
podman pull debian:buster
O Podman:
-
baixa a imagem
-
armazena localmente no seu PC
-
não executa nada
-
deixa a imagem pronta para reutilização
A imagem fica salva em:
- rootless (usuário normal):
~/.local/share/containers/storage/
- como root:
/var/lib/containers/storage/
Você não mexe nisso manualmente.
A mesma imagem pode gerar inúmeros containers diferentes, ao mesmo tempo ou não.
4. Onde procurar imagens públicas
podman search não é confiável hoje para registries públicos. (Registry é onde as imagens moram. Tecnicamente, é um serviço que armazena, versiona e distribui imagens de container).
Use o navegador:
-
Docker Hub (imagens oficiais): debian - Official Image | Docker Hub
Depois, use a tag diretamente:
podman pull debian:buster
Buscar no site, baixar no terminal. Simples.
5. Rodando containers na prática
Container interativo básico
podman run -it debian:buster bash
Explicação rápida:
-
-i→ mantém entrada aberta -
-t→ cria terminal -
bash→ processo principal
Saiu do shell? Container morreu.
6. Volumes na prática (onde tudo faz sentido)
Bind mount (o mais comum)
podman run -it \
-v /home/daniel/meu_programa:/app \
-v /home/daniel/dados:/dados \
-w /app \
debian:buster bash
Isso não cria dados automaticamente.
O que acontece:
-
/app→ código/programa -
/dados→ onde VOCÊ decide salvar dados -
O programa só salva em
/dadosse for configurado para isso
Container não adivinha nada.
O -w /app define o diretório de trabalho quando o container inicializar, é o equivalente a: cd /app. Se não usar -w ele inicia no diretório definido pela imagem, geralmente o diretório raiz: /. Então -w não é persistência, é contexto de execução.
Regra de persistência
Só persiste o que for gravado no volume montado.
Se o programa grava em outro lugar, o dado morre junto com o container.
7. E os pacotes instalados com apt?
Dentro do container:
apt update
apt install vim
Isso:
-
altera apenas o filesystem do container
-
não vai para o volume
-
não persiste após o container morrer
Isso é comportamento correto.
Quando isso faz sentido
-
testes
-
debug
-
reproduzir bugs antigos
Quando NÃO faz sentido
Se você quer um ambiente reutilizável, crie uma imagem nova.
Exemplo de arquivo dockerfile (sem extensão):
FROM debian:buster
RUN apt update && apt install -y \
vim \
curl \
&& apt clean
Build:
podman build -t debian10-custom .
O Podman:
-
lê o Dockerfile no diretório atual (.)
-
executa cada instrução
-
cria uma nova imagem independente da imagem-base, que pode até ser deletada se quiser
-
salva localmente com o nome debian10-custom
-
o
dockerfilenão é mais necessário agora, pode ser deletado, ou pode ser mantido caso precise recriar essa imagem
Agora os pacotes fazem parte da imagem.
8. Containers sem volume: o que acontece
Se você não usar volume:
-
tudo que você fizer dentro do container
-
arquivos, pacotes, configs
-
é perdido quando o container termina
Isso é o padrão.
9. Podman Compose (serviços de verdade)
Instalação:
sudo apt install podman-compose
Exemplo de docker-compose.yml:
services:
app:
image: node:20
volumes:
- .:/app
ports:
- "3000:3000"
Subir:
podman-compose up
Derrubar:
podman-compose down
10. Compatibilidade com Docker (quando o mundo insiste)
sudo apt install podman-docker
O comando diz docker.
Quem executa é o Podman.
11. Onde o Podman é objetivamente superior
-
Ambientes multiusuário
-
Servidores sérios
-
Sistemas que respeitam segurança
-
Quem não aceita daemon root rodando 24/7
Docker virou padrão por convenção.
Podman é padrão por arquitetura.
12. Regra final (grave em pedra)
-
Imagem é base
-
Container é descartável
-
Volume é memória
-
Pacote pertence à imagem
-
Dado pertence ao volume
Se você pensa:
“Quero rodar coisas antigas sem quebrar meu sistema moderno”
A resposta é Podman.
Sem drama. Sem gambiarra. Sem arrependimento.
