Para listar todas as imagens disponíveis localmente, utilize o comando:
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu 22.04 2b4cba85892a 2 weeks ago 72.8MB
nginx latest 61395b4c586d 3 weeks ago 187MB
redis 7-alpine 3ba1b4a8c89f 1 month ago 32.1MB
Para iniciar um container interativo, execute:
$ docker run -it ubuntu:22.04 /bin/bash
root@a1b2c3d4e5f6:/# exit
Para executar um processo em segundo plano, use a flag -d:
$ docker run -d ubuntu:22.04 /bin/sh -c "while true; do echo 'servico ativo'; sleep 2; done"
f9e8d7c6b5a4... # ID do container
Para verificar os logs de um container em execução:
$ docker logs f9e8d7c6b5a4
servico ativo
servico ativo
Listar containers ativos:
$ docker ps
CONTAINER ID IMAGE COMMAND STATUS NAMES
f9e8d7c6b5a4 ubuntu:22.04 "/bin/sh -c 'while…" Up 2 minutes thirsty_kalam
Encerrar um container de forma graceful:
$ docker stop thirsty_kalam
Forçar o encerramento de um container que não responde:
$ docker kill f9e8d7c6b5a4
Listar todos os containers, incluindo os parados:
$ docker ps -a
Reiniciar containers existentes:
$ docker start f9e8d7c6b5a4
$ docker restart thirsty_kalam
Remover containers parados. Para containers ativos, encerre-os primeiro ou use -f:
$ docker rm f9e8d7c6b5a4
$ docker rm -f thirsty_kalam
Remover imagens não utilizadas. Para imagens com containers associados, remova-os primeiro ou force a remoção:
$ docker rmi ubuntu:22.04
# Para forçar:
$ docker rmi -f nginx:latest
Nomeação de Containers
Atribuir um nome customizado durante a criação:
$ docker run -itd --name meu-redis redis:7-alpine
123456abcdef...
Renomear um container existente:
$ docker rename meu-redis redis-producao
O nome facilita referenciar o container em outros comandos.
Configurações de Inicialização
Definir o hostname do container:
$ docker run -it -h servidor-web ubuntu:22.04 bash
root@servidor-web:/#
Configurar políticas de reinicialização automática:
no: Não reiniciar (padrão).on-failure[:max-retries]: Reiniciar apenas em caso de erro.always: Sempre reiniciar.unless-stopped: Sempre reiniciar, exceto se parado explicitamente.
# Exemplo com 'always'
$ docker run -d --restart=always --name web-always nginx
# Exemplo com 'unless-stopped'
$ docker run -d --restart=unless-stopped --name db-stopped postgres:15
Atualizar a política de reinicialização de um container existante:
$ docker update --restart=no web-always
Montagem de Volumes
Mapear um diretório do host para dentro do container:
$ mkdir -p /dados/app
$ docker run -it -v /dados/app:/app ubuntu:22.04 bash
Isso garante a persistência dos dados fora do ciclo de vida do container.
Limitação de Recursos
Os recursos do container podem ser controlados via cgroups.
CPU
Definir a proporção de CPU (shares):
$ docker run -it --cpu-shares 512 ubuntu:22.04 bash
Isolar CPUs específicas para o container:
$ docker run -it --cpuset-cpus="0,1" ubuntu:22.04 bash
Memória
Limitar o uso de memória:
$ docker run -it -m 256m ubuntu:22.04 bash
I/O de Disco
Limitar a velocidade de escrita em um dispositivo:
$ docker run -it --device /dev/sda:/dev/xvda --device-write-bps /dev/xvda:10mb ubuntu:22.04 bash
Testar o limite com dd:
root@container:/# dd if=/dev/zero of=/tmp/teste bs=1M count=100 oflag=direct
Ferramenta de Teste de Carga (stress)
Útil para testar os limites de recursos configurados.
Exemplo de uso para estressar a CPU:
$ stress --cpu 4 --timeout 30s --verbose
Parâmetros comuns: --cpu N: Cria N processos consumindo CPU. --vm N: Cria N processos consumindo memória. --vm-bytes B: Define o tamanho da memória alocada por processo (ex: 128M).