Básico
Executando Containers
docker run nginx # run image docker run -d nginx # detached (background) docker run -p 8080:80 nginx # map port docker run --name web nginx # named container docker run -it ubuntu bash # interactive shell
Comandos Essenciais
docker psListar containers em execução
docker ps -aListar todos os containers (incluindo parados)
docker imagesListar imagens locais
docker pull nginxBaixar imagem do registry
docker infoInformações gerais do sistema
Gerenciamento de Containers
Ciclo de Vida
docker start <id>Iniciar container parado
docker stop <id>Parar com segurança (SIGTERM)
docker kill <id>Forçar parada (SIGKILL)
docker restart <id>Reiniciar container
docker rm <id>Remover container parado
docker rm -f <id>Forçar remoção (mesmo em execução)
Inspeção & Debugging
docker logs <id>Ver logs do container
docker logs -f <id>Seguir logs em tempo real
docker exec -it <id> bashAbrir shell no container
docker inspect <id>Metadados detalhados do container (JSON)
docker top <id>Processos em execução no container
docker statsUso de recursos em tempo real
Copiar Arquivos
docker cp file.txt :/app/ # host → container docker cp :/app/log.txt ./ # container → host
Imagens
Build & Tag
docker build -t myapp . # build from Dockerfile docker build -t myapp:v2 . # with tag docker tag myapp user/myapp:v2 # retag image
Publicar
docker login docker push user/myapp:v2 docker pull user/myapp:v2
Gerenciar Imagens
docker imagesListar todas as imagens locais
docker rmi <image>Remover imagem
docker image pruneRemover imagens sem referência
docker system pruneRemover todos os dados não usados
docker history <image>Exibir histórico de camadas da imagem
Dockerfile
Instruções Comuns
FROM node:20Imagem base
WORKDIR /appDefinir diretório de trabalho
COPY . .Copiar arquivos para a imagem
RUN npm installExecutar comando durante o build
CMD ["node", "app.js"]Comando padrão em tempo de execução
EXPOSE 3000Documentar porta que o container escuta
ENV NODE_ENV=productionDefinir variável de ambiente
ARG VERSION=latestVariável de build
ENTRYPOINT ["python"]Executável fixo (CMD = argumentos)
Exemplo de Dockerfile
FROM node:20-alpine WORKDIR /app COPY package*.json ./ RUN npm ci --production COPY . . EXPOSE 3000 CMD ["node", "server.js"]
Volumes
Armazenamento Persistente
docker volume create mydata docker run -v mydata:/app/data nginx docker run -v $(pwd):/app nginx # bind mount
Comandos de Volume
docker volume lsListar volumes
docker volume inspect <v>Detalhes do volume
docker volume rm <v>Remover volume
docker volume pruneRemover volumes não usados
Redes
Básico de Rede
docker network create mynet docker run --network mynet --name api nginx docker run --network mynet --name db postgres
Comandos de Rede
docker network lsListar redes
docker network inspect <n>Detalhes da rede
docker network connect <n> <c>Conectar container à rede
docker network rm <n>Remover rede

Containers na mesma rede podem se comunicar pelo nome

Docker Compose
Exemplo compose.yaml
services: web: build: . ports: ["3000:3000"] depends_on: [db] db: image: postgres:16 environment: POSTGRES_PASSWORD: secret volumes: [pgdata:/var/lib/postgresql/data] volumes: pgdata:
Comandos Compose
docker compose upIniciar todos os serviços
docker compose up -dIniciar em segundo plano
docker compose downParar e remover containers
docker compose down -vTambém remover volumes
docker compose buildReconstruir imagens
docker compose logs -fSeguir logs de todos os serviços
docker compose psListar serviços em execução
docker compose exec web bashAbrir shell em um serviço
Padrões Úteis
Comandos de Limpeza
docker system prune -a # remove all unused docker container prune # remove stopped docker image prune -a # remove unused images
Receitas Rápidas
Container temporáriodocker run --rm -it alpine sh
Verificar portadocker port
Variáveis de ambientedocker run -e KEY=val image
Arquivo de envdocker run --env-file .env image
Política de restartdocker run --restart unless-stopped image
Limite de recursosdocker run --memory 512m --cpus 1 image