Comandos Docker: Guia Rápido para Sysadmins — Imagens, Containers e Volumes

Docker · Containers · Linux · DevOps · Sysadmin  |  ✎ Duarte Spínola  |  27 de Abril de 2026

O Docker permite criar, empacotar e executar aplicações em containers isolados — um por serviço, cada um com as suas dependências, sem conflitos com o sistema operativo do servidor. Este guia reúne os comandos mais utilizados no dia-a-dia para gerir imagens, containers, volumes e redes, com exemplos prontos a usar.

1. Visão Geral do Docker

O Docker assenta em três conceitos fundamentais que importa distinguir antes de usar os comandos:

Conceito O que é Analogia
Imagem Template imutável com o sistema de ficheiros e dependências da aplicação ISO de instalação
Container Instância em execução de uma imagem — isolada, com o seu próprio processo e sistema de ficheiros VM leve em execução
Volume Armazenamento persistente fora do container — os dados sobrevivem ao ciclo de vida do container Disco de dados externo

2. Trabalhar com Imagens

As imagens são descarregadas de um registry (por defeito o Docker Hub) ou construídas localmente a partir de um Dockerfile.

Comando Descrição Exemplo
docker pull <imagem>[:<tag>] Descarregar uma imagem do registry docker pull nginx:latest
docker images Listar imagens disponíveis localmente docker images
docker build -t <nome>:<tag> . Construir uma imagem a partir de um Dockerfile na directoria actual docker build -t myapp:v1 .
docker push <nome>[:<tag>] Enviar a imagem para um registry remoto docker push myrepo/myapp
docker rmi <nome>[:<tag>] Remover uma imagem local docker rmi nginx
docker image prune Remover todas as imagens sem tag (dangling) para libertar espaço em disco docker image prune

Exemplo — descarregar e verificar uma imagem

# Descarregar a imagem oficial do nginx
docker pull nginx:latest

# Verificar imagens disponíveis localmente
docker images

# Construir imagem local a partir do Dockerfile na directoria actual
docker build -t myapp:v1 .

3. Gerir Containers

O ciclo de vida de um container passa pelos estados created → running → stopped → removed. Os comandos seguintes cobrem cada fase.

Comando Descrição Exemplo
docker run -d –name <nome> <imagem> Criar e iniciar um container em modo detached (segundo plano) docker run -d –name web nginx
docker run -d -p <host>:<container> Publicar uma porta do container no host — <portaHost>:<portaContainer> docker run -d -p 8080:80 nginx
docker ps Listar containers em execução docker ps
docker ps -a Listar todos os containers (incluindo os parados) docker ps -a
docker start <nome> Iniciar um container já existente (previamente parado) docker start web
docker stop <nome> Parar um container graciosamente (envia SIGTERM, aguarda 10s, depois SIGKILL) docker stop web
docker restart <nome> Parar e reiniciar um container docker restart web
docker rm <nome> Remover um container parado docker rm web
docker logs <nome> [-f] Ver os logs de um container. Com -f segue em tempo real (tail -f) docker logs web -f
docker inspect <nome> Ver configuração detalhada do container em formato JSON — IPs, volumes, variáveis de ambiente docker inspect web

Exemplo — iniciar o nginx e expor na porta 8080

# Criar e iniciar o container em segundo plano, expondo a porta 8080 do host para a porta 80 do container
docker run -d –name web -p 8080:80 nginx

# Verificar que está em execução
docker ps

# Seguir os logs em tempo real
docker logs web -f

# Parar e remover
docker stop web && docker rm web

ℹ Remover container automaticamente após execução

Para containers temporários (ex: executar um comando pontual), usar a flag --rm — o container é eliminado automaticamente quando pára: docker run --rm ubuntu echo "olá"

4. Volumes e Redes

Volumes — persistência de dados

Os dados dentro de um container são perdidos quando o container é removido. Os volumes guardam dados fora do container, de forma persistente e independente do seu ciclo de vida.

Comando Descrição Exemplo
docker volume create <nome> Criar um volume com nome docker volume create dbdata
docker volume ls Listar volumes existentes docker volume ls
docker volume inspect <nome> Ver detalhe de um volume — incluindo o caminho no sistema de ficheiros do host docker volume inspect dbdata
docker run -v <volume>:<path> Montar um volume num container na directoria especificada docker run -v dbdata:/var/lib/mysql mysql
docker volume rm <nome> Remover um volume (apenas se não estiver em uso) docker volume rm dbdata

Redes — comunicação entre containers

Por defeito os containers comunicam pela rede bridge. Criar redes personalizadas permite isolar grupos de containers e comunicar entre eles pelo nome (DNS interno automático).

Comando Descrição Exemplo
docker network create <nome> Criar uma rede Docker personalizada docker network create frontend
docker network ls Listar redes existentes docker network ls
docker network inspect <nome> Ver detalhe de uma rede — containers ligados, subnet, gateway docker network inspect frontend
docker run –network <nome> Ligar um container a uma rede específica no arranque docker run –network frontend nginx
# Criar uma rede isolada
docker network create app-net

# Iniciar dois containers na mesma rede — comunicam pelo nome
docker run -d –name api –network app-net myapp:v1
docker run -d –name db –network app-net -v dbdata:/var/lib/mysql mysql

# O container “api” pode ligar-se ao “db” usando o nome “db” como hostname

5. Ferramentas Auxiliares

Comando Descrição Exemplo
docker exec -it <nome> /bin/bash Entrar no terminal interactivo de um container em execução docker exec -it web /bin/bash
docker exec <nome> <comando> Executar um comando pontual dentro do container sem abrir shell docker exec web nginx -t
docker stats Monitorizar em tempo real o consumo de CPU, memória, rede e disco de todos os containers docker stats
docker cp <src> <dest> Copiar ficheiros entre o host e o container (em qualquer direcção) docker cp web:/etc/nginx/nginx.conf ./
docker compose up -d Iniciar todos os serviços definidos no ficheiro docker-compose.yml em modo detached docker compose up -d
docker compose down Parar e remover todos os containers, redes e volumes criados pelo Compose docker compose down
docker system prune Limpar tudo o que não está em uso — containers parados, imagens sem tag, redes e cache de build docker system prune -a
# Entrar no terminal do container web
docker exec -it web /bin/bash

# Ver consumo de recursos de todos os containers em tempo real
docker stats

# Limpar imagens, containers e redes não utilizados (liberta espaço em disco)
docker system prune -a

6. Boas Práticas

# Prática Porquê
1 Nomear sempre containers e volumes Sem nome, o Docker gera nomes aleatórios — difícil de identificar em docker ps
2 Usar tags de versão — evitar :latest em produção :latest pode trazer versões com breaking changes após um docker pull
3 Limitar recursos com --cpus e --memory Sem limites, um container pode consumir todos os recursos do host e afectar outros serviços
4 Dados persistentes sempre em volumes — nunca dentro do container Os dados do container são destruídos com docker rm — base de dados, uploads, logs devem estar em volumes
5 Usar docker compose para múltiplos serviços Mais simples e reproduzível do que gerir vários docker run manualmente
6 Limpar regularmente com docker system prune Imagens, containers parados e cache de build acumulam-se rapidamente e consomem dezenas de GB

✓ Exemplo de limitação de recursos

docker run -d –name api –cpus “0.5” –memory “256m” -p 3000:3000 myapp:v1
# Limita o container a 50% de 1 CPU e 256 MB de RAM

Este artigo foi útil?

Duarte Spínola

Deixe um Comentário