Folha de consulta de comandos Docker

Pratique comandos Docker com laboratórios práticos

Use esta folha de consulta de comandos Docker como referência rápida para instalar Docker, executar contêineres, gerenciar imagens, ler logs, executar comandos, criar Dockerfiles, configurar volumes e redes, usar Docker Compose e limpar recursos locais.

Instalação e Configuração

Instalação no Linux

Instale o Docker em sistemas Ubuntu/Debian.

# Atualizar gerenciador de pacotes
sudo apt update
# Instalar pré-requisitos
sudo apt install apt-transport-https ca-certificates curl
software-properties-common
# Adicionar a chave GPG oficial do Docker
curl -fsSL https://download.docker.com/linux/ubuntu/gpg
| sudo apt-key add -
# Adicionar repositório Docker
sudo add-apt-repository "deb [arch=amd64]
https://download.docker.com/linux/ubuntu bionic stable"
# Instalar Docker
sudo apt update && sudo apt install docker-ce
# Iniciar serviço Docker
sudo systemctl start docker
sudo systemctl enable docker

Windows e macOS

Instale o Docker Desktop para gerenciamento baseado em GUI.

# Windows: Baixar Docker Desktop em docker.com
# macOS: Usar Homebrew ou baixar de docker.com
brew install --cask docker
# Ou baixar diretamente de:
# https://www.docker.com/products/docker-desktop

Configuração Pós-Instalação

Configure o Docker para uso não-root e verifique a instalação.

# Adicionar usuário ao grupo docker (Linux)
sudo usermod -aG docker $USER
# Sair e fazer login novamente para que as alterações de grupo tenham efeito
# Verificar instalação do Docker
docker --version
docker run hello-world

Instalação do Docker Compose

Instale o Docker Compose para aplicações multi-contêineres.

# Linux: Instalar via curl
sudo curl -L
"https://github.com/docker/compose/releases/download
/v2.24.0/docker-compose-$(uname -s)-$(uname -m)" -o
/usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
# Verificar instalação
docker-compose --version
# Nota: Docker Desktop inclui o Compose

Comandos Básicos do Docker

Informações do Sistema: docker version / docker system info

Verifique os detalhes da instalação e do ambiente Docker.

# Exibir informações de versão do Docker
docker version
# Mostrar informações do sistema Docker
information
docker system info
# Exibir ajuda para comandos Docker
docker help
docker <comando> --help

Executando Contêineres: docker run

Crie e inicie um contêiner a partir de uma imagem.

# Executar um contêiner interativamente
docker run -it ubuntu:latest bash
# Executar contêiner em segundo plano
(detached)
docker run -d --name meu-container
nginx
# Executar com mapeamento de porta
docker run -p 8080:80 nginx
# Executar com remoção automática após a saída
docker run --rm hello-world
Quiz

Faça login para responder este quiz e acompanhar seu progresso de aprendizagem

O que docker run -d faz?
Executa o contêiner em modo de depuração
Exclui o contêiner após ele parar
Executa o contêiner em modo desanexado (background)
Executa o contêiner com configurações padrão

Listar Contêineres: docker ps

Visualize contêineres em execução e parados.

# Listar contêineres em execução
docker ps
# Listar todos os contêineres (incluindo
parados)
docker ps -a
# Listar apenas IDs de contêineres
docker ps -q
# Mostrar o contêiner criado mais recentemente
docker ps -l

Gerenciamento de Contêineres

Ciclo de Vida do Contêiner: start / stop / restart

Controle o estado de execução do contêiner.

# Parar um contêiner em execução
docker stop nome_do_container
# Iniciar um contêiner parado
docker start nome_do_container
# Reiniciar um contêiner
docker restart nome_do_container
# Pausar/despausar processos do contêiner
docker pause nome_do_container
docker unpause nome_do_container

Executar Comandos: docker exec

Execute comandos dentro de contêineres em execução.

# Executar shell bash interativo
docker exec -it nome_do_container bash
# Executar um único comando
docker exec nome_do_container ls -la
# Executar como usuário diferente
docker exec -u root nome_do_container whoami
# Executar em um diretório específico
docker exec -w /app nome_do_container pwd

Remoção de Contêineres: docker rm

Remova contêineres do sistema.

# Remover um contêiner parado
docker rm nome_do_container
# Remover forçadamente um contêiner em execução
docker rm -f nome_do_container
# Remover múltiplos contêineres
docker rm container1 container2
# Remover todos os contêineres parados
docker container prune

Logs do Contêiner: docker logs

Visualize a saída do contêiner e depure problemas.

# Visualizar logs do contêiner
docker logs nome_do_container
# Seguir logs em tempo real
docker logs -f nome_do_container
# Mostrar apenas logs recentes
docker logs --tail 50 nome_do_container
# Mostrar logs com carimbos de data/hora
docker logs -t nome_do_container

Gerenciamento de Imagens

Construção de Imagens: docker build

Crie imagens Docker a partir de Dockerfiles.

# Construir imagem a partir do diretório atual
docker build .
# Construir e taguear uma imagem
docker build -t minhaapp:latest .
# Construir com argumentos de construção
docker build --build-arg VERSION=1.0 -t minhaapp .
# Construir sem usar cache
docker build --no-cache -t minhaapp .
Quiz

Faça login para responder este quiz e acompanhar seu progresso de aprendizagem

O que docker build -t minhaapp:latest . faz?
Constrói uma imagem Docker com a tag "minhaapp:latest" a partir do diretório atual
Executa um contêiner chamado "minhaapp"
Puxa a imagem "minhaapp:latest" do Docker Hub
Exclui a imagem "minhaapp:latest"

Inspeção de Imagens: docker images / docker inspect

Liste e examine imagens Docker.

# Listar todas as imagens locais
docker images
# Listar imagens com filtros específicos
docker images nginx
# Mostrar detalhes da imagem
docker inspect nome_da_imagem
# Ver histórico de construção da imagem
docker history nome_da_imagem

Operações de Registro: docker pull / docker push

Baixar e enviar imagens para registros.

# Puxar imagem do Docker Hub
docker pull nginx:latest
# Puxar versão específica
docker pull ubuntu:20.04
# Enviar imagem para o registro
docker push meuusuario/minhaapp:latest
# Taguear imagem antes de enviar
docker tag minhaapp:latest meuusuario/minhaapp:v1.0

Limpeza de Imagens: docker rmi / docker image prune

Remova imagens não utilizadas para liberar espaço em disco.

# Remover uma imagem específica
docker rmi nome_da_imagem
# Remover imagens não utilizadas
docker image prune
# Remover todas as imagens não utilizadas (não apenas pendentes)
docker image prune -a
# Remover imagem forçadamente
docker rmi -f nome_da_imagem

Fundamentos do Dockerfile

Instruções Essenciais

Comandos centrais do Dockerfile para construir imagens.

# Imagem base
FROM ubuntu:20.04
# Definir informação do mantenedor
LABEL maintainer="user@example.com"
# Instalar pacotes
RUN apt-get update && apt-get install -y \
    python3 \
    python3-pip \
    && rm -rf /var/lib/apt/lists/*
# Copiar arquivos do host para o contêiner
COPY app.py /app/
# Definir diretório de trabalho
WORKDIR /app
# Expor porta
EXPOSE 8000
Quiz

Faça login para responder este quiz e acompanhar seu progresso de aprendizagem

Qual é o propósito da instrução FROM em um Dockerfile?
Copia arquivos do host para o contêiner
Especifica a imagem base sobre a qual construir
Define variáveis de ambiente
Define o comando a ser executado quando o contêiner inicia

Configuração de Execução

Configure como o contêiner será executado.

# Definir variáveis de ambiente
ENV PYTHON_ENV=production
ENV PORT=8000
# Criar usuário para segurança
RUN groupadd -r appuser && useradd -r -g appuser
appuser
USER appuser
# Definir comando de inicialização
CMD ["python3", "app.py"]
# Ou usar ENTRYPOINT para comandos fixos
ENTRYPOINT ["python3"]
CMD ["app.py"]
# Definir verificação de saúde
HEALTHCHECK --interval=30s --timeout=3s \
  CMD curl -f http://localhost:8000/ || exit 1

Docker Compose

Comandos Básicos do Compose: docker-compose up / docker-compose down

Iniciar e parar aplicações multi-contêineres.

# Iniciar serviços em primeiro plano
docker-compose up
# Iniciar serviços em segundo plano
docker-compose up -d
# Construir e iniciar serviços
docker-compose up --build
# Parar e remover serviços
docker-compose down
# Parar e remover com volumes
docker-compose down -v
Quiz

Faça login para responder este quiz e acompanhar seu progresso de aprendizagem

O que docker-compose up -d faz?
Para todos os contêineres em execução
Constrói imagens sem iniciar contêineres
Mostra logs de todos os serviços
Inicia todos os serviços definidos em docker-compose.yml em modo desanexado

Gerenciamento de Serviços

Controle serviços individuais dentro de aplicações Compose.

# Listar serviços em execução
docker-compose ps
# Visualizar logs de serviço
docker-compose logs nome_do_servico
# Seguir logs para todos os serviços
docker-compose logs -f
# Reiniciar um serviço específico
docker-compose restart nome_do_servico

Exemplo de docker-compose.yml

Exemplo de configuração de aplicação multi-serviço.

version: '3.8'
services:
  web:
    build: .
    ports:
      - "8000:8000"
    environment:
      -
DATABASE_URL=postgresql://user:pass@db:5432/myapp
    depends_on:
      - db
    volumes:
      - .:/app

  db:
    image: postgres:13
    environment:
      POSTGRES_DB: myapp
      POSTGRES_USER: user
      POSTGRES_PASSWORD: pass
    volumes:
      - db_data:/var/lib/postgresql/data
volumes:
  db_data:

Rede e Volumes

Rede de Contêineres

Conecte contêineres e exponha serviços.

# Listar redes
docker network ls
# Criar uma rede personalizada
docker network create mynetwork
# Executar contêiner em rede específica
docker run --network mynetwork nginx
# Conectar contêiner em execução à rede
docker network connect mynetwork nome_do_container
# Inspecionar detalhes da rede
docker network inspect mynetwork

Mapeamento de Portas

Exponha portas de contêineres para o sistema host.

# Mapear porta única
docker run -p 8080:80 nginx
Quiz

Faça login para responder este quiz e acompanhar seu progresso de aprendizagem

Em docker run -p 8080:80 nginx, o que os números das portas significam?
8080 é a porta do host, 80 é a porta do contêiner
80 é a porta do host, 8080 é a porta do contêiner
Ambas as portas são portas de contêiner
Ambas as portas são portas do host
# Mapear múltiplas portas
docker run -p 8080:80 -p 8443:443 nginx
# Mapear para interface host específica
docker run -p 127.0.0.1:8080:80 nginx
# Expor todas as portas definidas na imagem
docker run -P nginx

Volumes de Dados: docker volume

Persistir e compartilhar dados entre contêineres.

# Criar um volume nomeado
docker volume create myvolume
# Listar todos os volumes
docker volume ls
# Inspecionar detalhes do volume
docker volume inspect myvolume
# Remover volume
docker volume rm myvolume
# Remover volumes não utilizados
docker volume prune

Montagem de Volumes

Montar volumes nomeados e diretórios do host em contêineres.

# Montar volume nomeado
docker run -v myvolume:/data nginx
# Montar diretório do host (bind mount)
docker run -v /caminho/no/host:/caminho/no/container nginx
# Montar diretório atual
docker run -v $(pwd):/app nginx
# Montagem somente leitura
docker run -v /caminho/no/host:/caminho/no/container:ro nginx

Inspeção e Depuração de Contêineres

Detalhes do Contêiner: docker inspect

Obter informações detalhadas sobre contêineres e imagens.

# Inspecionar configuração do contêiner
docker inspect nome_do_container
# Obter informação específica usando formatação
docker inspect --format='{{.State.Status}}'
nome_do_container
# Obter endereço IP
docker inspect --format='{{.NetworkSettings.IPAddress}}'
nome_do_container
# Obter volumes montados
docker inspect --format='{{.Mounts}}' nome_do_container

Monitoramento de Recursos

Monitorar o uso de recursos e o desempenho do contêiner.

# Mostrar processos em execução no contêiner
docker top nome_do_container
# Exibir estatísticas de uso de recursos ao vivo
docker stats
# Mostrar estatísticas para contêiner específico
docker stats nome_do_container
# Monitorar eventos em tempo real
docker events

Operações de Arquivo: docker cp

Copiar arquivos entre contêineres e o sistema host.

# Copiar arquivo do contêiner para o host
docker cp nome_do_container:/caminho/do/arquivo ./
# Copiar arquivo do host para o contêiner
docker cp ./arquivo nome_do_container:/caminho/do/destino
# Copiar diretório
docker cp ./diretorio
nome_do_container:/caminho/do/destino/
# Copiar com modo de arquivo para preservar permissões
docker cp -a ./diretorio nome_do_container:/caminho/

Solução de Problemas

Depurar problemas de contêiner e conectividade.

# Verificar código de saída do contêiner
docker inspect --format='{{.State.ExitCode}}'
nome_do_container
# Visualizar processos do contêiner
docker exec nome_do_container ps aux
# Testar conectividade de rede
docker exec nome_do_container ping google.com
# Verificar uso de disco
docker exec nome_do_container df -h

Registro e Autenticação

Autenticar e interagir com o Docker Hub.

# Fazer login no Docker Hub
docker login
# Fazer login em registro específico
docker login registry.example.com
# Procurar por imagens no Docker Hub
docker search nginx
# Procurar com filtro
docker search --filter stars=100 nginx

Marcação e Publicação de Imagens

Preparar e publicar imagens em registros.

# Taguear imagem para o registro
docker tag minhaapp:latest usuario/minhaapp:v1.0
docker tag minhaapp:latest
registry.example.com/minhaapp:latest
# Enviar para o Docker Hub
docker push usuario/minhaapp:v1.0
# Enviar para registro privado
docker push registry.example.com/minhaapp:latest

Registro Privado

Trabalhar com registros Docker privados.

# Puxar de registro privado
docker pull registry.company.com/minhaapp:latest
# Executar registro local
docker run -d -p 5000:5000 --name registry registry:2
# Enviar para registro local
docker tag minhaapp localhost:5000/minhaapp
docker push localhost:5000/minhaapp

Segurança de Imagens

Verificar integridade e segurança das imagens.

# Habilitar Docker Content Trust
export DOCKER_CONTENT_TRUST=1
# Assinar e enviar imagem
docker push usuario/minhaapp:signed
# Inspecionar assinaturas de imagem
docker trust inspect usuario/minhaapp:signed
# Escanear imagens em busca de vulnerabilidades
docker scan minhaapp:latest

Limpeza e Manutenção do Sistema

Limpeza do Sistema: docker system prune

Remover recursos Docker não utilizados para liberar espaço em disco.

# Remover contêineres, redes, imagens não utilizados
docker system prune
# Incluir volumes não utilizados na limpeza
docker system prune -a --volumes
# Remover tudo (use com cautela)
docker system prune -a -f
# Mostrar uso de espaço
docker system df

Limpeza Direcionada

Remover tipos específicos de recursos não utilizados.

# Remover contêineres parados
docker container prune
# Remover imagens não utilizadas
docker image prune -a
# Remover volumes não utilizados
docker volume prune
# Remover redes não utilizadas
docker network prune

Operações em Massa

Executar operações em múltiplos contêineres/imagens.

# Parar todos os contêineres em execução
docker stop $(docker ps -q)
# Remover todos os contêineres
docker rm $(docker ps -aq)
# Remover todas as imagens
docker rmi $(docker images -q)
# Remover apenas imagens pendentes (dangling)
docker rmi $(docker images -f "dangling=true" -q)

Limites de Recursos

Controlar o consumo de recursos dos contêineres.

# Limitar uso de memória
docker run --memory=512m nginx
# Limitar uso de CPU
docker run --cpus="1.5" nginx
# Limitar CPU e memória
docker run --memory=1g --cpus="2.0" nginx
# Definir política de reinicialização
docker run --restart=always nginx

Configuração e Configurações do Docker

Configuração do Daemon

Configurar o daemon Docker para uso em produção.

# Editar configuração do daemon
sudo nano
/etc/docker/daemon.json
# Exemplo de configuração:
{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  },
  "storage-driver": "overlay2"
}
# Reiniciar serviço Docker
sudo systemctl restart docker

Variáveis de Ambiente

Configurar o comportamento do cliente Docker com variáveis de ambiente.

# Definir host Docker
export
DOCKER_HOST=tcp://remote-
docker:2376
# Habilitar verificação TLS
export DOCKER_TLS_VERIFY=1
export
DOCKER_CERT_PATH=/caminho/para/cert
s
# Definir registro padrão
export
DOCKER_REGISTRY=registry.co
mpany.com
# Saída de depuração
export DOCKER_BUILDKIT=1

Ajuste de Desempenho

Otimizar o Docker para melhor desempenho.

# Habilitar recursos experimentais
echo '{"experimental": true}' |
sudo tee
/etc/docker/daemon.json
# Opções de driver de armazenamento
{
  "storage-driver": "overlay2",
  "storage-opts": [

"overlay2.override_kernel_check
=true"
  ]
}
# Configurar logging
{
  "log-driver": "syslog",
  "log-opts": {"syslog-address":
"udp://logs.company.com:514"}
}

Melhores Práticas

Melhores Práticas de Segurança

Mantenha seus contêineres seguros e prontos para produção.

# Executar como usuário não-root no Dockerfile
RUN groupadd -r appuser && useradd -r -g appuser
appuser
USER appuser
# Usar tags de imagem específicas, não 'latest'
FROM node:16.20.0-alpine
# Usar sistemas de arquivos somente leitura quando possível
docker run --read-only nginx

Otimização de Desempenho

Otimize contêineres para velocidade e eficiência de recursos.

# Usar builds multi-stage para reduzir o tamanho da imagem
FROM node:16 AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
FROM node:16-alpine
WORKDIR /app
COPY --from=builder /app/node_modules
./node_modules
COPY . .
CMD ["node", "server.js"]