Podman - Guia Prático (tutorial)

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

:warning: 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:

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 /dados se 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:

  1. lê o Dockerfile no diretório atual (.)

  2. executa cada instrução

  3. cria uma nova imagem independente da imagem-base, que pode até ser deletada se quiser

  4. salva localmente com o nome debian10-custom

  5. o dockerfile nã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.

Cara massa demais! Cheguei a testar esses dias atrás usando o com podman. Porém não consegui alterar os dados do projeto pois ficavam com permissão de root. Vou tentar mais uma vez seu tutorial ficou bem completo, obrigado por compartilhar.

Só preciso para pequenos projetos em PHP, o bom do podman que não preciso subir mais um serviço e também o pacote está disponível no repositório do Debiam. Não preciso adicionar repositório extras.

Adicionei os comandos básicos pra listar, parar, deletar etc. Corrigi várias inconsistências no tutorial (e alguns conceitos bagunçados). Só não sei como editar o tutorial acima.

Versão atualizada:

Cara migrei pro Podman, curti demais! Também Consegui integrar com o Vscodium do Flatpak.