Skip to Content

Docker / Podman

Este artigo aborda como instalar e usar as tecnologias de contêiner Docker e Podman no Ubuntu 26.04.

Instalando Docker CE

Remover versões antigas

sudo apt remove docker docker-engine docker.io containerd runc 2>/dev/null

Instale Docker CE

# Install dependencies sudo apt update sudo apt install ca-certificates curl gnupg -y # Add Docker official GPG key sudo install -m 0755 -d /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg sudo chmod a+r /etc/apt/keyrings/docker.gpg # Add Docker repository echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \ sudo tee /etc/apt/sources.list.d/docker.list > /dev/null # Install Docker sudo apt update sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y

Use Docker sem sudo

# Add current user to the docker group sudo usermod -aG docker $USER # Apply group changes (or log out and back in) newgrp docker

Verifique a instalação

docker --version docker compose version docker run hello-world

Configurar espelho Docker (China)

Editar /etc/docker/daemon.json:

sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<EOF { "registry-mirrors": [ "https://docker.1ms.run", "https://docker.xuanyuan.me" ] } EOF # Restart Docker sudo systemctl daemon-reload sudo systemctl restart docker

Docker Noções básicas

Operações de imagem

# Pull an image docker pull ubuntu:26.04 docker pull nginx:latest # List local images docker images # Remove an image docker rmi nginx:latest # Build an image docker build -t myapp:latest . # Clean up unused images docker image prune -a

Operações de Contêiner

# Run a container docker run -d --name mynginx -p 8080:80 nginx # List running containers docker ps # List all containers docker ps -a # Enter a container docker exec -it mynginx bash # View container logs docker logs -f mynginx # Stop and remove a container docker stop mynginx docker rm mynginx # Clean up all stopped containers docker container prune

Volumes

# Create a volume docker volume create mydata # Mount a volume docker run -d -v mydata:/data --name mycontainer ubuntu # Mount a host directory docker run -d -v /home/user/data:/data --name mycontainer ubuntu # List volumes docker volume ls docker volume inspect mydata

Docker Compor

Docker Compose é usado para definir e executar aplicativos de vários contêineres.

Exemplo: Web App + Banco de Dados

Crie compose.yaml:

services: web: image: nginx:latest ports: - "8080:80" volumes: - ./html:/usr/share/nginx/html depends_on: - db db: image: postgres:18 environment: POSTGRES_DB: mydb POSTGRES_USER: admin POSTGRES_PASSWORD: secret volumes: - pgdata:/var/lib/postgresql/data ports: - "5432:5432" redis: image: redis:7-alpine ports: - "6379:6379" volumes: pgdata:

Comandos de composição comuns

# Start all services docker compose up -d # Check service status docker compose ps # View logs docker compose logs -f web # Stop all services docker compose down # Stop and remove volumes docker compose down -v # Rebuild and start docker compose up -d --build

Escrevendo um arquivo Docker

Um exemplo típico de construção de vários estágios:

# Build stage FROM node:22-alpine AS builder WORKDIR /app COPY package*.json ./ RUN npm ci COPY . . RUN npm run build # Runtime stage FROM node:22-alpine WORKDIR /app COPY --from=builder /app/dist ./dist COPY --from=builder /app/node_modules ./node_modules EXPOSE 3000 CMD ["node", "dist/index.js"]

Podman: uma alternativa para Docker

Podman é um mecanismo de contêiner sem daemon compatível com a CLI Docker.

Instale Podman

sudo apt install podman -y

Verifique a instalação:

podman --version podman info

Podman Noções básicas

Os comandos Podman são quase idênticos aos Docker:

# Pull and run a container podman pull docker.io/library/nginx podman run -d --name mynginx -p 8080:80 nginx # List containers podman ps # Stop and remove podman stop mynginx podman rm mynginx

Diferenças entre Podman e Docker

  • Daemonless: Podman não requer um processo daemon em segundo plano
  • Rootless: Podman executa contêineres como um usuário normal por padrão, proporcionando melhor segurança
  • Suporte a pods: Podman oferece suporte nativo ao conceito de pod (semelhante aos pods Kubernetes)
  • Compatibilidade: A grande maioria dos comandos Docker podem ser substituídos diretamente por Podman

Configurar o alias de compatibilidade Docker

echo 'alias docker=podman' >> ~/.bashrc source ~/.bashrc

Podman Compor

# Install podman-compose (prefer apt or pipx to avoid the PEP 668 restriction) sudo apt install -y podman-compose # Or: sudo apt install -y pipx && pipx install podman-compose # Usage is the same as docker compose podman-compose up -d podman-compose down

Docker Manutenção do Sistema

# Check disk usage docker system df # Full cleanup (use with caution) docker system prune -a --volumes # Check Docker service status sudo systemctl status docker

Docker e Podman têm, cada um, seus pontos fortes. Docker possui um ecossistema mais maduro, enquanto Podman oferece melhor segurança e não requer um daemon. Escolha com base em suas necessidades.

Perguntas frequentes

Devo escolher Docker ou Podman?

Se você é iniciante ou precisa colaborar com uma equipe, Docker é recomendado porque possui um ecossistema mais maduro, documentação mais rica e suporte mais amplo da comunidade. Se você priorizar a segurança ou trabalhar em um ambiente sem privilégios root, Podman é a melhor escolha, pois não requer um daemon e é executado como um usuário não root por padrão.

Posso usar a versão Snap de Docker?

O pacote docker.io no repositório Ubuntu e a versão Snap de Docker podem ser usados, mas normalmente ficam atrás da versão oficial Docker CE e podem ter problemas de compatibilidade. Recomendamos instalar Docker CE do repositório oficial Docker conforme descrito neste artigo para obter a versão mais recente e melhor compatibilidade.

Preciso do sudo para usar Docker?

Por padrão, são necessários privilégios sudo para executar comandos Docker. Depois de adicionar seu usuário ao grupo docker, você pode usar Docker sem sudo (execute sudo usermod -aG docker $USER, efetue logout e login novamente). Observe que estar no grupo docker equivale a ter privilégios de root, portanto, tenha cuidado em ambientes multiusuários.

Artigos relacionados