quarta-feira, 9 de abril de 2025

Usando Podman + Podman Compose com Imagens do Harbor

Podman + Podman Compose com Harbor

Publicado por Sysadmin Urbano | Infraestrutura, SysOps e DevOps

Um guia prático para quem vive na linha de frente da operação de sistemas.

Usando Podman e Podman Compose com Imagens do Harbor: Configurações, Alternativas e Boas Práticas

Introdução

Em ambientes modernos de DevOps e infraestrutura como código, o uso de containers é central para isolar serviços, distribuir aplicações e garantir portabilidade. Enquanto o Docker é amplamente conhecido, o Podman tem se consolidado como uma alternativa sólida e mais segura. Ele elimina o daemon, permite execução rootless e segue o padrão OCI.

Neste artigo, vamos integrar o Harbor (registry privado de containers) com o Podman, abordando duas abordagens distintas:

  • Uso direto com o Podman
  • Gerenciamento orquestrado com o Podman Compose

Além disso, vamos configurar corretamente o uso de registries privados (com ou sem TLS), ajustar permissões, discutir boas práticas e entender quando usar cada modelo.

1. Instalando o Podman

RHEL / Oracle Linux / CentOS

sudo dnf install -y podman

Ubuntu / Debian

sudo apt update
sudo apt install -y podman

Verifique a instalação:

podman --version

2. Configurando acesso ao Harbor

Faça login (se necessário):

podman login harbor.seuservidor.com

2.1 Usando registries sem HTTPS (HTTP)

sudo mkdir -p /etc/containers/registries.conf.d
sudo nano /etc/containers/registries.conf.d/harbor.conf

Adicione:

[[registry]]
prefix = "harbor.seuservidor.com"
location = "harbor.seuservidor.com"
insecure = true

3. Puxando e rodando imagens do Harbor com Podman

podman pull harbor.seuservidor.com/devops/nginx-custom:1.0
podman run -d --name webapp \
  -p 8080:80 \
  harbor.seuservidor.com/devops/nginx-custom:1.0
  • -d: executa o container em segundo plano (detached mode)
  • --name: define um nome identificável para o container
  • -p 8080:80: expõe a porta 80 do container na porta 8080 do host

Verificando a execução

podman ps

Isso mostrará todos os containers em execução, com ID, nome e portas mapeadas.

Acessando o serviço

Se o container oferece uma API ou serviço web, você pode testá-lo com:

curl http://localhost:8080

Ou acessando diretamente pelo navegador: http://localhost:8080

4. Alternativa: Usando Podman Compose

Para projetos com múltiplos serviços:

4.1 Instalação

pip install podman-compose
python3 -m venv venv
source venv/bin/activate
pip install podman-compose

5. Estrutura de Projeto

meu-app/
├── docker-compose.yml
└── .env (opcional)

Exemplo de docker-compose.yml

version: "3"
services:
  web:
    image: harbor.seuservidor.com/devops/nginx-custom:1.0
    ports:
      - "8080:80"
    restart: always

6. Subindo os serviços

podman-compose up -d
podman-compose logs
podman ps
podman-compose down

7. Comparativo: Podman direto vs Podman Compose

Critério Podman (direto) Podman Compose
Complexidade Baixa Média
Multi-serviços Manual Gerenciado via YAML
Escalabilidade Limitada Modular
Controle de rede Simples Mais granular
Ideal para Containers isolados Projetos multi-serviço

8. Boas práticas

  • Armazene as credenciais com segurança.
  • Evite usar a tag latest em produção.
  • Use versões fixas para garantir reprodutibilidade.
  • Crie redes próprias para isolar serviços:
podman network create meu_rede

Conclusão

Integrar o Harbor com Podman (com ou sem Compose) permite controle total sobre suas imagens, com mais segurança e independência do Docker daemon. O Podman direto é ideal para containers rápidos e isolados, enquanto o Compose se destaca em ambientes mais complexos.

Nos próximos capítulos, vamos explorar volumes persistentes, redes customizadas e estratégias de deploy em produção.

Nenhum comentário:

Postar um comentário