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çãoDescrição
-a, --allLista todos os contêineres, incluindo os parados (por padrão, lista apenas os em execução)
-q, --quietExibe apenas os IDs dos contêineres
-f, --filter condiçãoFiltra os resultados; pode ser usado várias vezes
--format modeloPersonaliza o formato da saída: table, json ou um modelo Go
-n, --last númeroExibe os n contêineres criados mais recentemente (de todos os estados)
-l, --latestExibe o contêiner criado mais recentemente
-s, --sizeExibe o tamanho dos contêineres
--no-truncNão trunca a saída (exibe os IDs e comandos completos)

Condições comuns de --filter:

CondiçãoExemplo
statusstatus=running, status=exited, status=created
namename=web (correspondência parcial)
labellabel=team=backend
ancestorancestor=nginx:1.30-alpine (criado a partir de uma imagem)
exitedexited=137 (filtra pelo código de saída)
publishpublish=8080 (usa uma determinada porta)
network / volumenetwork=appnet, volume=pgdata
healthhealth=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); virtual inclui a imagem. O contêiner nginx gravou alguns arquivos temporários ao iniciar, por isso aparece com 86kB.
  • -n 1 exibe 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, use docker container prune.

Capítulos relacionados

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