- 1 1. Introdução
- 2 2. O que é o Podman?
- 3 3. Instalando o Podman no Ubuntu
- 4 4. Usando Dockerfile com Podman
- 5 5. Exemplo Prático: Construindo um Contêiner Baseado em Ubuntu
- 6 6. Recursos e Dicas do Podman
- 7 7. Migrando do Docker para o Podman
- 8 8. Perguntas Frequentes (FAQ)
- 8.1 P1. Quais são as principais diferenças entre Podman e Docker?
- 8.2 P2. Há diferença entre Dockerfile e Containerfile?
- 8.3 P3. Posso usar arquivos Docker Compose com o Podman?
- 8.4 P4. O Podman é estável no Ubuntu?
- 8.5 P5. Há restrições de acesso no modo sem root?
- 8.6 P6. O Podman pode puxar imagens do Docker Hub?
- 8.7 P7. O Podman é adequado para uso em produção?
1. Introdução
A Evolução e a Importância Crescente da Tecnologia de Contêineres
Nos últimos anos, a tecnologia de contêineres ganhou rapidamente importância no campo de desenvolvimento e operação de aplicações. Em particular, a capacidade de alinhar os ambientes de desenvolvimento e produção garante a reprodutibilidade das operações, um benefício chave que conquistou forte apoio entre os engenheiros.
Embora o Docker continue sendo a plataforma de contêineres mais amplamente reconhecida, o Podman tem atraído atenção crescente como uma alternativa moderna. O Podman oferece uma interface de linha de comando (CLI) quase idêntica à do Docker, mas se destaca por sua arquitetura sem daemon e leve e por seu suporte a operações sem root (não‑root).
Por que “Podman + Dockerfile + Ubuntu”?
Neste artigo, explicaremos como combinar Podman, Dockerfile e Ubuntu para fluxos de trabalho modernos de contêineres no Linux.
- Ubuntu é uma distribuição Linux popular usada por todos, desde iniciantes até usuários avançados,
- Dockerfile serve como um plano para construir imagens de contêiner,
- e o Podman é uma ferramenta de próxima geração projetada para gerenciar essas imagens de forma flexível e segura.
Com a crescente conscientização sobre segurança, a abordagem de usar Podman com Dockerfile no Ubuntu está sendo adotada cada vez mais por desenvolvedores individuais e equipes corporativas.
Propósito e Público‑Alvo
O objetivo deste artigo é fornecer um guia claro, passo a passo, para construir contêineres práticos com Podman e Dockerfile no Ubuntu.
Este artigo destina‑se a leitores como:
- Desenvolvedores experientes com Docker que têm curiosidade sobre o Podman
- Usuários de Ubuntu que buscam gerenciamento de contêineres seguro
- Engenheiros que desejam incorporar tecnologias de contêineres em seu fluxo de trabalho
- Iniciantes interessados em escrever Dockerfiles e construir com Podman
Cobriremos tudo, desde os conceitos básicos e dicas de solução de problemas até as principais diferenças em relação ao Docker e como migrar.
2. O que é o Podman?
Visão Geral do Podman
Podman (Pod Manager) é uma ferramenta de gerenciamento de contêineres de próxima geração desenvolvida por uma comunidade liderada pela Red Hat. Assim como o Docker, ele pode criar, executar e gerenciar contêineres compatíveis com OCI, mas seu design e arquitetura diferem de maneira significativa.
A maior característica do Podman é que ele não requer um daemon em segundo plano. Isso possibilita operações leves e seguras. O Podman também oferece suporte ao modo rootless, permitindo que usuários comuns gerenciem contêineres sem privilégios elevados. A CLI é altamente compatível com o Docker, de modo que a maioria dos comandos é quase idêntica.
Principais Recursos do Podman
A seguir, alguns recursos notáveis do Podman:
Arquitetura Sem Daemon
O Podman opera sem um daemon (processo residente) em segundo plano para gerenciamento de contêineres. Isso resulta em uso eficiente de recursos, sem processos desnecessários em segundo plano.
Suporte Rootless (Usuários Não‑Privilegiados)
O Podman permite que usuários comuns executem e gerenciem contêineres sem privilégios de administrador. Isso possibilita operar contêineres com segurança em ambientes multi‑usuário ou de servidor, reduzindo significativamente os riscos de segurança.
CLI Compatível com Docker
O Podman usa quase a mesma estrutura de comandos do Docker. Por exemplo, os seguintes comandos Docker funcionam quase identicamente no Podman:
podman build -t myimage .
podman run -it myimage bash
Isso permite que usuários familiarizados com o Docker façam a transição para o Podman de forma fluida.
Recurso de Pod
O Podman adota o conceito de “Pod” do Kubernetes, permitindo que você gerencie múltiplos contêineres como uma única unidade lógica. Isso aumenta a compatibilidade com o Kubernetes e facilita a migração de ambientes locais para a nuvem.
Compatibilidade com Ubuntu
Embora o Podman seja amplamente adotado em distribuições Fedora e baseadas em RHEL, ele também funciona de forma estável no Ubuntu. Você pode instalá‑lo a partir dos repositórios oficiais, e a configuração é simples. Especialmente a partir do Ubuntu 20.04 LTS, a manutenção dos pacotes melhorou, reduzindo a barreira de adoção.
3. Instalando o Podman no Ubuntu
Antes de Começar: Lista de Verificação Pré‑Instalação
Antes de instalar o Podman no Ubuntu, verifique a versão do seu Ubuntu. O Podman é recomendado para Ubuntu 20.04 LTS ou posterior. Versões mais antigas podem não ter os pacotes necessários no repositório oficial.
Verifique a versão do Ubuntu com o seguinte comando:
lsb_release -a
A instalação do Podman requer privilegios sudo. Mesmo que você pretenda usar o modo rootless, são necessários privilégios de administrador para a instalação inicial, portanto, certifique‑se de que os possui.
Instalando o Podman (positório Oficial do Ubuntu)
No Ubuntu 20.04, 22.04 ou posterior, você pode instalar o Podman facilmente com o APT:
sudo apt update
sudo apt install -y podman
Após a instalação, verifique a versão para confirmar que tudo foi configurado corretamente:
podman --version
Como Obter a Versão Mais Recente (PPA Oficial)
O pacote do Podman no repositório padrão do Ubuntu pode não ser o mais recente. Se você quiser os recursos mais novos, use o Personal Package Archive (PPA) oficial:
. /etc/os-release
echo "deb https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/xUbuntu_${VERSION_ID}/ /" | sudo tee /etc/apt/sources.list.d/devel:kubic:libcontainers:stable.list
curl -L https://download.opensuse.org/repositories/devel:kubic:libcontainers:stable/xUbuntu_${VERSION_ID}/Release.key | sudo apt-key add -
sudo apt update
sudo apt install -y podman
Isso lhe dá acesso ao último lançamento do Podman, equivalente aos ecossistemas Red Hat e Fedora.
Teste Básico de Funcionalidade do Podman
Depois da instalação, execute uma verificação rápida:
podman info
Esse comando mostra a versão do Podman, a configuração e os recursos suportados, como o modo rootless.
Teste a extração e execução de um contêiner oficial do Alpine Linux:
podman run --rm -it alpine sh
Se o shell for iniciado com sucesso, sua configuração do Podman está funcionando corretamente.
4. Usando Dockerfile com Podman
O que é um Dockerfile?
Um Dockerfile é um plano para construir imagens de contêiner. É um arquivo de texto que lista a imagem base, pacotes a instalar, arquivos a copiar e outras instruções em sequência.
Ferramentas de contêiner como Podman e Docker podem criar automaticamente um ambiente consistente com base nesse arquivo.
Exemplo de instruções:
FROM ubuntu:22.04
RUN apt update && apt install -y curl
COPY ./app.sh /usr/local/bin/app.sh
CMD ["bash", "/usr/local/bin/app.sh"]
Isso instala pacotes, copia scripts e define o que deve ser executado por padrão na imagem resultante.
Como Usar Dockerfile com Podman
Você pode construir imagens de contêiner a partir de Dockerfiles com o Podman, quase exatamente como faria com o Docker.
1. Prepare o Diretório
Organize seus arquivos assim:
project/
├── Dockerfile
└── app.sh
app.sh pode ser um script simples:
#!/bin/bash
echo "Hello from Podman container!"
Torne o script executável:
chmod +x app.sh
2. Construa com o Podman
Com o Dockerfile no diretório atual, execute:
podman build -t mypodmanapp .
Isso cria uma imagem de contêiner chamada mypodmanapp.
3. Verifique o Resultado da Construção
Veja a imagem com:
podman images
4. Execute o Contêiner
Inicie um contêiner a partir da imagem que você acabou de construir:
podman run --rm mypodmanapp
Se tudo estiver configurado corretamente, você verá: Hello from Podman container!
Diferença com Containerfile
O Podman aceita arquivos chamados Containerfile, que usam a mesma sintaxe do Dockerfile. Esse é apenas um nome neutro, não vinculado à marca Docker.
A funcionalidade é idêntica. Seja o arquivo chamado Dockerfile ou Containerfile, o Podman o utilizará:
podman build -f Containerfile -t myimage .
Basta especificar o nome do arquivo com a opção -f, se necessário.
5. Exemplo Prático: Construindo um Contêiner Baseado em Ubuntu
Criando um Dockerfile Baseado em Ubuntu
Vamos percorrer passo a passo a construção de um Dockerfile baseado em Ubuntu e a construção e execução de uma imagem de contêiner com Podman.
Aqui está um exemplo simples de Dockerfile:
FROM ubuntu:22.04
RUN apt update &&
apt install -y curl &&
apt clean
COPY hello.sh /usr/local/bin/hello.sh
RUN chmod +x /usr/local/bin/hello.sh
CMD ["/usr/local/bin/hello.sh"]
Este Dockerfile:
- Usa a imagem oficial do Ubuntu 22.04
- Instala o pacote
curl - Copia
hello.shdo host para o contêiner - Define
hello.shcomo o script padrão
Agora, crie um script simples hello.sh:
#!/bin/bash
echo "Hello from a Podman container!"
Dê permissão de execução a ele:
chmod +x hello.sh
Construindo a Imagem com Podman
Uma vez que seus arquivos estejam prontos, construa a imagem com:
podman build -t ubuntu-hello .
A flag -t ubuntu-hello etiqueta sua imagem; o . especifica o diretório de build.
Se bem-sucedido, você verá sua nova imagem listada com:
podman images
Executando e Testando a Imagem
Execute um contêiner a partir de sua nova imagem:
podman run --rm ubuntu-hello
Saída de exemplo:
Hello from a Podman container!
A opção --rm remove automaticamente o contêiner após ele sair, perfeito para testes.
Dica: Acesso Interativo ao Contêiner
Se você quiser trabalhar interativamente dentro do contêiner, use a opção -it para iniciar o Bash:
podman run -it ubuntu-hello bash
Isso lhe dá um ambiente de desenvolvimento Ubuntu leve dentro de seu contêiner.
6. Recursos e Dicas do Podman
Pontos Fortes do Podman: Flexibilidade & Segurança
O Podman fornece maior flexibilidade e segurança aprimorada enquanto permanece compatível com o Docker. Aqui estão alguns recursos úteis e dicas de operação diária.
Operações Seguras com Modo Rootless
Um dos principais pontos fortes do Podman é o modo rootless, que permite que usuários não-root executem, parem e gerenciem contêineres.
Por exemplo, você pode usar o Podman sem sudo:
podman run -it ubuntu bash
As operações são limitadas ao diretório home do usuário, minimizando o risco ao sistema. Isso é especialmente valioso em servidores compartilhados ou em ambientes de desenvolvimento.
Integrando com systemd para Auto-Início
O Podman pode integrar nativamente com o systemd, permitindo que contêineres iniciem automaticamente como serviços Linux.
Gere um arquivo de unidade systemd com:
podman generate systemd --name mycontainer --files --restart-policy=always
Isso cria um arquivo de unidade em ~/.config/systemd/user/. Ative e inicie com:
systemctl --user daemon-reexec
systemctl --user enable --now container-mycontainer.service
Os contêineres agora reiniciarão automaticamente mesmo após a reinicialização do servidor.
Gerenciando Múltiplos Contêineres com podman-compose
Além de operações de contêiner único, o Podman suporta gerenciamento de múltiplos contêineres. Usando podman-compose, você pode gerenciar projetos complexos semelhantes ao Docker Compose.
Instale com pip:
pip install podman-compose
Como é compatível com arquivos docker-compose.yml, a migração de projetos é fácil.
Para iniciar serviços, basta executar:
podman-compose up -d
O Podman permite que você reproduza ambientes de desenvolvimento instantaneamente.
Outros Comandos e Dicas Úteis
Limpeza de Imagens e Contêineres Não Utilizados
podman system prune -a
Remova arquivos e imagens não utilizados para liberar armazenamento.
Conclusão de Shell (bash/zsh)
Instale os scripts de conclusão do Podman para um uso mais fácil da CLI:
sudo apt install podman-docker
Isso habilita a conclusão de comandos, semelhante ao Docker, para o comando podman.
7. Migrando do Docker para o Podman
Por Que a Migração para o Podman Está em Alta
Enquanto o Docker tem sido o padrão de facto para contêineres por muito tempo, o Podman está ganhando popularidade por seu peso mais leve e segurança mais forte. Red Hat Enterprise Linux (RHEL) e Fedora mudaram do Docker para o Podman por padrão, levando muitas equipes a considerar a migração.
Esta seção cobre passos práticos e pontos a considerar para migrar do Docker para o Podman.
Compatibilidade de Comandos: Docker vs. Podman
O Podman é altamente compatível com comandos do Docker, então você pode geralmente substituí-los diretamente:
| Docker | Podman |
|---|---|
docker build -t myapp . | podman build -t myapp . |
docker run -it myapp | podman run -it myapp |
docker images | podman images |
docker ps | podman ps |
Essa compatibilidade perfeita de CLI é uma grande vantagem do Podman.
Alcançando Compatibilidade Total com podman-docker
Se seus scripts ou pipelines de CI/CD usam comandos docker, instalar o pacote podman-docker permite que o Podman sirva como uma substituição direta:
sudo apt install podman-docker
Isso configura o comando docker como um link simbólico para o Podman:
which docker
# → /usr/bin/docker → podman symlink
Você pode então executar scripts do Docker sem modificação.
Alternativa ao Docker Compose: podman-compose
Se você usa Docker Compose para projetos multi-contêiner, podman-compose fornece funcionalidade similar.
É altamente compatível, mas algumas opções do Compose podem diferir (ex. depends_on), e o registro de eventos ou verificações de saúde podem se comportar de forma diferente. Para pilhas básicas de web + DB, a migração é geralmente suave.
Migrando Imagens & Volumes
Imagens Docker locais não são visíveis para o Podman por padrão. Você pode:
Opção 1: Re-puxar com Podman
podman pull ubuntu:22.04
Opção 2: Exportar do Docker → Importar para o Podman
# Export with Docker
docker save myimage > myimage.tar
# Import with Podman
podman load < myimage.tar
Isso torna imagens construídas com Docker disponíveis no Podman.
Outras Considerações
- Operação sem root: O Docker tipicamente roda como root, enquanto o Podman é projetado para operação sem root por padrão
- Estrutura de daemon: O Podman é sem daemon, então o gerenciamento de processos difere
- Locais de armazenamento de logs e dados podem diferir—verifique as configurações durante a migração
8. Perguntas Frequentes (FAQ)
P1. Quais são as principais diferenças entre Podman e Docker?
R1. A maior diferença é que o Podman é “sem daemon” (não requer processo em segundo plano), tornando-o mais leve e seguro. O Podman também suporta modo sem root, permitindo que os usuários gerenciem contêineres sem privilégios elevados. A compatibilidade de CLI é alta, então a maioria dos comandos é a mesma.
P2. Há diferença entre Dockerfile e Containerfile?
R2. Não há diferença funcional. Ambos são arquivos que descrevem como construir contêineres, com sintaxe idêntica. Alguns projetos preferem “Containerfile” como um nome neutro, mas você pode usar qualquer um dos nomes com o Podman.
P3. Posso usar arquivos Docker Compose com o Podman?
R3. O Podman não suporta Docker Compose nativamente, mas você pode usar podman-compose (uma ferramenta Python) para interpretar e executar arquivos docker-compose.yml em um ambiente Podman.
Algumas opções do Compose (depends_on, etc.) podem ter limitações, então teste configurações complexas com antecedência.
P4. O Podman é estável no Ubuntu?
R4. Sim, o Podman roda de forma confiável no Ubuntu 20.04 LTS e versões mais novas. Está disponível nos repositórios oficiais do Ubuntu e pode ser instalado com apt. Para a versão mais recente, você pode usar o PPA oficial.
P5. Há restrições de acesso no modo sem root?
R5. No modo sem root, certas operações privilegiadas e vinculação a portas abaixo de 1024 são restritas. O redirecionamento de porta pode contornar isso. Para a maioria dos casos de uso, o modo sem root é prático e recomendado.
P6. O Podman pode puxar imagens do Docker Hub?
R6. Sim, o Podman pode puxar imagens do Docker Hub por padrão. Às vezes, você pode precisar especificar o caminho completo do registro, ex., docker.io/library/ubuntu:
podman pull docker.io/library/ubuntu
O Podman também suporta registros como Quay.io e GitHub Container Registry.
P7. O Podman é adequado para uso em produção?
A7. Sim, o Podman inclui conceitos de pod compatíveis com Kubernetes e integração com systemd para inicialização automática, tornando‑o adequado para ambientes de produção — especialmente onde é necessária alta segurança. O Podman agora é o padrão no Red Hat Enterprise Linux e no Fedora, com ampla adoção.




