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/nullInstale 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 -yUse 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 dockerVerifique a instalação
docker --version
docker compose version
docker run hello-worldConfigurar 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 dockerDocker 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 -aOperaçõ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 pruneVolumes
# 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 mydataDocker 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 --buildEscrevendo 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 -yVerifique a instalação:
podman --version
podman infoPodman 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 mynginxDiferenç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 ~/.bashrcPodman 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 downDocker 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 dockerDocker 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
- Docker Orquestração de serviço do Compose – Implante aplicativos de vários contêineres com Docker Compose em um ambiente de servidor
- Máquinas Virtuais e Contêineres – Compare tecnologias de VM e contêineres para entender seus respectivos casos de uso