Conteúdo
Tutorial do docker ps: liste contêineres com filtros e formato personalizado
docker ps lista contêineres. Para ver o ciclo de vida completo dos contêineres, consulte Ciclo de vida do contêiner.
Sintaxe
docker ps [opções]
docker ps e docker container ls são o mesmo comando.
Opções
| Opção | Descrição |
|---|---|
-a, --all | Lista todos os contêineres, incluindo os parados (por padrão, lista apenas os em execução) |
-q, --quiet | Exibe apenas os IDs dos contêineres |
-f, --filter condição | Filtra os resultados; pode ser usado várias vezes |
--format modelo | Personaliza o formato da saída: table, json ou um modelo Go |
-n, --last número | Exibe os n contêineres criados mais recentemente (de todos os estados) |
-l, --latest | Exibe o contêiner criado mais recentemente |
-s, --size | Exibe o tamanho dos contêineres |
--no-trunc | Não trunca a saída (exibe os IDs e comandos completos) |
Condições comuns de --filter:
| Condição | Exemplo |
|---|---|
status | status=running, status=exited, status=created |
name | name=web (correspondência parcial) |
label | label=team=backend |
ancestor | ancestor=nginx:1.30-alpine (criado a partir de uma imagem) |
exited | exited=137 (filtra pelo código de saída) |
publish | publish=8080 (usa uma determinada porta) |
network / volume | network=appnet, volume=pgdata |
health | health=unhealthy |
Exemplos
O ambiente tem três contêineres: web (nginx) e worker1 (com o rótulo team=backend) estão em execução, e stopped1 já terminou.
Em execução e todos
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c260b28b0630 alpine:3.23 "sleep 600" 2 seconds ago Up 2 seconds worker1
1ec4fdc5c592 nginx:1.30-alpine "/docker-entrypoint.…" 8 seconds ago Up 2 seconds 80/tcp web
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c260b28b0630 alpine:3.23 "sleep 600" 2 seconds ago Up 2 seconds worker1
17b5b9a8c9ce alpine:3.23 "true" 3 seconds ago Exited (0) 2 seconds ago stopped1
1ec4fdc5c592 nginx:1.30-alpine "/docker-entrypoint.…" 8 seconds ago Up 2 seconds 80/tcp web
$ docker ps -q
c260b28b0630
1ec4fdc5c592
docker ps não lista stopped1; ele só aparece com docker ps -a, com o status Exited (0). -q exibe somente os IDs, o que facilita passá-los para outros comandos.
Filtragem
$ docker ps -a --filter status=exited
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
17b5b9a8c9ce alpine:3.23 "true" 3 seconds ago Exited (0) 2 seconds ago stopped1
$ docker ps --filter name=work
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c260b28b0630 alpine:3.23 "sleep 600" 2 seconds ago Up 2 seconds worker1
$ docker ps --filter label=team=backend
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c260b28b0630 alpine:3.23 "sleep 600" 2 seconds ago Up 2 seconds worker1
Campos personalizados
$ docker ps --format "table {{.Names}}\t{{.Image}}\t{{.Status}}"
NAMES IMAGE STATUS
worker1 alpine:3.23 Up 2 seconds
web nginx:1.30-alpine Up 3 seconds
table adiciona uma linha de cabeçalho, e os campos são separados por \t (Tab). Campos comuns: .ID, .Names, .Image, .Status, .Ports, .CreatedAt, .Labels, .Size. Para gerar a saída em JSON, use --format json.
Tamanho e contêiner mais recente
$ docker ps -s
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES SIZE
c260b28b0630 alpine:3.23 "sleep 600" 3 seconds ago Up 2 seconds worker1 4.1kB (virtual 9.1MB)
1ec4fdc5c592 nginx:1.30-alpine "/docker-entrypoint.…" 9 seconds ago Up 3 seconds 80/tcp web 86kB (virtual 66.8MB)
$ docker ps -n 1
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c260b28b0630 alpine:3.23 "sleep 600" 3 seconds ago Up 2 seconds worker1
- O primeiro número em
SIZEé o tamanho gravado pelo próprio contêiner (camada gravável);virtualinclui a imagem. O contêiner nginx gravou alguns arquivos temporários ao iniciar, por isso aparece com 86kB. -n 1exibe apenas o contêiner criado mais recentemente.
Processamento em lote: remover todos os contêineres parados
$ docker rm $(docker ps -aq --filter status=exited)
17b5b9a8c9ce
$(...) executa primeiro o comando dentro dos parênteses e passa o resultado (os IDs de todos os contêineres parados) como argumento para docker rm. Você também pode obter o mesmo resultado com docker container prune (consulte Liberar espaço em disco).
O PowerShell também aceita a sintaxe
$(...); o Windows CMD não aceita. Nesse caso, usedocker container prune.
Capítulos relacionados
- Ciclo de vida do contêiner
- docker inspect: consulte informações detalhadas de um contêiner
- Comandos do docker compose:
docker compose ps
Exercícios
Exercício: liste todos os contêineres criados a partir de nginx:1.30-alpine (incluindo os parados) e exiba apenas o nome e o status.
Resposta
docker ps -a --filter ancestor=nginx:1.30-alpine --format "table {{.Names}}\t{{.Status}}"
Perguntas frequentes
Por que docker ps não mostra o contêiner que acabei de executar?
docker ps lista apenas contêineres **em execução**. Se o contêiner já terminou (por exemplo, um comando de execução única ou uma inicialização que falhou), use docker ps -a.
docker ps e docker container ls são iguais?
Sim. docker ps, docker container ls, docker container list e docker container ps são o mesmo comando.
Qual é a diferença entre Exited (0) e Exited (1) em STATUS?
O número entre parênteses é o código de saída. 0 indica que o programa terminou normalmente; um valor diferente de 0 indica um erro; 137 indica que o processo foi encerrado à força (por exemplo, por falta de memória). Use docker logs para ver o motivo.
Atualizado 14 de outubro de 2026