🧩 Exercícios: Podman e Runtimes Alternativos
Extra Guia de Ferramentas • Trilha Progressiva em 4 Níveis
🎯 Nível 1: Fundamentos
Problema 15.1 — Execução Rootless com Podman
Contexto: Executar um container Nginx utilizando Podman como usuário comum sem privilégios sudo e inspecionar os mapeamentos de UID no Linux.
Resultado Esperado
# Executa sem sudo
podman run -d --name web-rootless -p 8080:8080 nginxinc/nginx-unprivileged:alpine
# Inspeciona processos
podman top web-rootless user huser
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_15_1_SeuNome.sh - Envie na tarefa:
Atividade Cap 15 - Podman e Runtimes
🔑 Gabarito de Código & Solução Comentada
podman run -d --name web-rootless -p 8080:8080 nginxinc/nginx-unprivileged:alpine
podman top web-rootless user huser
Comentário: O Podman utiliza User Namespaces mapeando o UID do host para UID 0 virtual dentro do container sem conceder privilégios reais de root.
🎯 Nível 2: Prática
Problema 15.2 — Criação de Pods Locais no Podman (Estilo Kubernetes)
Crie um Pod nomeado backend-pod no Podman compartilhando portas e execute dentro dele um container redis e um container de API comunicando-se via localhost.
🔑 Gabarito de Código & Solução Comentada
# 1. Cria o Pod com portas abertas
podman pod create --name backend-pod -p 8000:8000 -p 6379:6379
# 2. Adiciona o Redis ao Pod
podman run -d --pod backend-pod --name db-redis redis:alpine
# 3. Adiciona a API ao Pod (conecta no Redis via localhost:6379!)
podman run -d --pod backend-pod --name api-service -e REDIS_HOST=localhost minha-api:latest
🎯 Nível 3: Integração
Problema 15.3 — Geração de Manifestos Kubernetes YAML com Podman
Gere automaticamente o manifesto YAML padrão do Kubernetes a partir do Pod criado localmente no Problema 15.2 com o comando podman generate kube.
🔑 Gabarito de Código & Solução Comentada
# Gera o arquivo YAML pronto para ser aplicado no cluster K8s:
podman generate kube backend-pod > k8s-deployment.yaml
# Para recriar o pod a partir do manifesto:
# podman play kube k8s-deployment.yaml
🎯 Nível 4: Desafio
Problema 15.4 — Setup de Ambiente Containerd com Colima no macOS / Linux
Escreva um script de setup automatizado que configure o colima com runtime containerd, 4 CPUs, 8GB de RAM e instale a CLI nerdctl.
🔑 Gabarito de Código & Solução Comentada
#!/usr/bin/env bash
set -euo pipefail
echo "Iniciando Colima com runtime containerd..."
colima start --cpu 4 --memory 8 --runtime containerd
echo "Verificando status com nerdctl..."
nerdctl version
echo "Executando container de teste..."
nerdctl run --rm alpine uname -a
echo "✅ Ambiente Containerd de alta performance operacional!"