2016-10-14 18:30:36 -04:00
---
title: "ps"
description: "The ps command description and usage"
2016-11-03 18:48:30 -04:00
keywords: "container, running, list"
2016-10-14 18:30:36 -04:00
---
2015-06-21 16:41:38 -04:00
# ps
2016-07-07 14:43:18 -04:00
```markdown
Usage: docker ps [OPTIONS]
2015-06-21 16:41:38 -04:00
2016-07-07 14:43:18 -04:00
List containers
2015-06-21 16:41:38 -04:00
cli: use custom annotation for aliases
Cobra allows for aliases to be defined for a command, but only allows these
to be defined at the same level (for example, `docker image ls` as alias for
`docker image list`). Our CLI has some commands that are available both as a
top-level shorthand as well as `docker <object> <verb>` subcommands. For example,
`docker ps` is a shorthand for `docker container ps` / `docker container ls`.
This patch introduces a custom "aliases" annotation that can be used to print
all available aliases for a command. While this requires these aliases to be
defined manually, in practice the list of aliases rarely changes, so maintenance
should be minimal.
As a convention, we could consider the first command in this list to be the
canonical command, so that we can use this information to add redirects in
our documentation in future.
Before this patch:
docker images --help
Usage: docker images [OPTIONS] [REPOSITORY[:TAG]]
List images
Options:
-a, --all Show all images (default hides intermediate images)
...
With this patch:
docker images --help
Usage: docker images [OPTIONS] [REPOSITORY[:TAG]]
List images
Aliases:
docker image ls, docker image list, docker images
Options:
-a, --all Show all images (default hides intermediate images)
...
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2022-06-28 04:52:25 -04:00
Aliases:
docker container ls, docker container list, docker container ps, docker ps
2016-07-07 14:43:18 -04:00
Options:
-a, --all Show all containers (default shows just running)
-f, --filter value Filter output based on conditions provided (default [])
2017-02-03 03:34:45 -05:00
- ancestor=(< image-name > [:tag]|< image-id > |< image @ digest > )
containers created from an image or a descendant.
- before=(< container-name > |< container-id > )
2017-02-04 01:28:14 -05:00
- expose=(< port > [/< proto > ]|< startport-endport > /[< proto > ])
2016-07-07 14:43:18 -04:00
- exited=< int > an exit code of < int >
2017-02-03 03:34:45 -05:00
- health=(starting|healthy|unhealthy|none)
- id=< ID > a container's ID
- isolation=(`default`|`process`|`hyperv`) (Windows daemon only)
- is-task=(true|false)
2016-07-07 14:43:18 -04:00
- label=< key > or label=< key > =< value >
- name=< string > a container's name
2017-02-03 03:34:45 -05:00
- network=(< network-id > |< network-name > )
2017-02-04 01:28:14 -05:00
- publish=(< port > [/< proto > ]|< startport-endport > /[< proto > ])
2016-07-07 14:43:18 -04:00
- since=(< container-name > |< container-id > )
2017-03-12 15:01:06 -04:00
- status=(created|restarting|removing|running|paused|exited)
2017-02-03 03:34:45 -05:00
- volume=(< volume name > |< mount point destination > )
2021-03-09 18:49:33 -05:00
--format string Format output using a custom template:
'table': Print output in table format with column headers (default)
'table TEMPLATE': Print output in table format using the given Go template
'json': Print in JSON format
'TEMPLATE': Print output using the given Go template.
Refer to https://docs.docker.com/go/formatting/ for more information about formatting output with templates
2016-07-07 14:43:18 -04:00
--help Print usage
-n, --last int Show n last created containers (includes all states) (default -1)
-l, --latest Show the latest created container (includes all states)
--no-trunc Don't truncate output
-q, --quiet Only display numeric IDs
-s, --size Display total file sizes
```
2015-06-21 16:41:38 -04:00
2017-02-07 18:42:48 -05:00
## Examples
2022-03-30 09:05:29 -04:00
### <a name=no-trunc></a> Do not truncate output (--no-trunc)
2017-02-07 18:42:48 -05:00
2015-06-21 16:41:38 -04:00
Running `docker ps --no-trunc` showing 2 linked containers.
2021-08-21 08:54:14 -04:00
```console
2022-06-05 06:38:31 -04:00
$ docker ps --no-trunc
2016-07-21 06:27:39 -04:00
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2022-06-06 09:02:58 -04:00
4c01db0b339c ubuntu:22.04 bash 17 seconds ago Up 16 seconds 3300-3310/tcp webapp
2016-07-21 06:27:39 -04:00
d7886598dbe2 crosbymichael/redis:latest /redis-server --dir 33 minutes ago Up 33 minutes 6379/tcp redis,webapp/db
```
2022-03-30 09:05:29 -04:00
### <a name=all></a> Show both running and stopped containers (-a, --all)
2017-02-07 18:42:48 -05:00
2016-07-21 06:27:39 -04:00
The `docker ps` command only shows running containers by default. To see all
2022-03-30 09:05:29 -04:00
containers, use the `--all` (or `-a` ) flag:
2015-06-21 16:41:38 -04:00
2021-08-21 08:54:14 -04:00
```console
2016-07-21 06:27:39 -04:00
$ docker ps -a
```
2015-06-21 16:41:38 -04:00
2016-07-21 06:27:39 -04:00
`docker ps` groups exposed ports into a single range if possible. E.g., a
container that exposes TCP ports `100, 101, 102` displays `100-102/tcp` in
the `PORTS` column.
2015-06-21 16:41:38 -04:00
2022-03-30 09:05:29 -04:00
### <a name=size></a> Show disk usage by container (--size)
2019-02-27 16:03:09 -05:00
2022-03-30 09:05:29 -04:00
The `docker ps --size` (or `-s` ) command displays two different on-disk-sizes for each container:
2019-02-27 16:03:09 -05:00
2021-08-21 08:54:14 -04:00
```console
2022-03-30 09:05:29 -04:00
$ docker ps --size
2020-04-19 09:43:08 -04:00
2019-02-27 16:03:09 -05:00
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES SIZE SIZE
e90b8831a4b8 nginx "/bin/bash -c 'mkdir " 11 weeks ago Up 4 hours my_nginx 35.58 kB (virtual 109.2 MB)
00c6131c5e30 telegraf:1.5 "/entrypoint.sh" 11 weeks ago Up 11 weeks my_telegraf 0 B (virtual 209.5 MB)
```
* The "size" information shows the amount of data (on disk) that is used for the _writable_ layer of each container
* The "virtual size" is the total amount of disk-space used for the read-only _image_ data used by the container and the writable layer.
2020-03-15 10:11:43 -04:00
2019-02-27 16:03:09 -05:00
For more information, refer to the [container size on disk ](https://docs.docker.com/storage/storagedriver/#container-size-on-disk ) section.
2022-03-30 09:05:29 -04:00
### <a name=filter></a> Filtering (--filter)
2015-06-21 16:41:38 -04:00
2022-03-30 09:05:29 -04:00
The `--filter` (or `-f` ) flag format is a `key=value` pair. If there is more
2015-06-21 16:41:38 -04:00
than one filter, then pass multiple flags (e.g. `--filter "foo=bar" --filter "bif=baz"` )
The currently supported filters are:
2017-06-21 13:31:03 -04:00
| Filter | Description |
|:----------------------|:-------------------------------------------------------------------------------------------------------------------------------------|
2017-07-27 16:05:31 -04:00
| `id` | Container's ID |
| `name` | Container's name |
| `label` | An arbitrary string representing either a key or a key-value pair. Expressed as `<key>` or `<key>=<value>` |
2017-06-21 13:31:03 -04:00
| `exited` | An integer representing the container's exit code. Only useful with `--all` . |
2017-07-27 16:05:31 -04:00
| `status` | One of `created` , `restarting` , `running` , `removing` , `paused` , `exited` , or `dead` |
2017-06-21 13:31:03 -04:00
| `ancestor` | Filters containers which share a given image as an ancestor. Expressed as `<image-name>[:<tag>]` , `<image id>` , or `<image@digest>` |
| `before` or `since` | Filters containers created before or after a given container ID or name |
| `volume` | Filters running containers which have mounted a given volume or bind mount. |
| `network` | Filters running containers connected to a given network. |
2017-07-27 16:05:31 -04:00
| `publish` or `expose` | Filters containers which publish or expose a given port. Expressed as `<port>[/<proto>]` or `<startport-endport>/[<proto>]` |
| `health` | Filters containers based on their healthcheck status. One of `starting` , `healthy` , `unhealthy` or `none` . |
| `isolation` | Windows daemon only. One of `default` , `process` , or `hyperv` . |
| `is-task` | Filters containers that are a "task" for a service. Boolean option (`true` or `false` ) |
2017-06-21 13:31:03 -04:00
2015-08-27 02:47:03 -04:00
2017-02-07 18:42:48 -05:00
#### label
2015-08-27 02:47:03 -04:00
The `label` filter matches containers based on the presence of a `label` alone or a `label` and a
value.
The following filter matches containers with the `color` label regardless of its value.
2021-08-21 08:54:14 -04:00
```console
2016-07-21 06:27:39 -04:00
$ docker ps --filter "label=color"
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
673394ef1d4c busybox "top" 47 seconds ago Up 45 seconds nostalgic_shockley
d85756f57265 busybox "top" 52 seconds ago Up 51 seconds high_albattani
```
2015-08-27 02:47:03 -04:00
The following filter matches containers with the `color` label with the `blue` value.
2021-08-21 08:54:14 -04:00
```console
2016-07-21 06:27:39 -04:00
$ docker ps --filter "label=color=blue"
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d85756f57265 busybox "top" About a minute ago Up About a minute high_albattani
```
2015-08-27 02:47:03 -04:00
2017-02-07 18:42:48 -05:00
#### name
2015-08-27 02:47:03 -04:00
The `name` filter matches on all or part of a container's name.
The following filter matches all containers with a name containing the `nostalgic_stallman` string.
2021-08-21 08:54:14 -04:00
```console
2016-07-21 06:27:39 -04:00
$ docker ps --filter "name=nostalgic_stallman"
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9b6247364a03 busybox "top" 2 minutes ago Up 2 minutes nostalgic_stallman
```
2015-08-27 02:47:03 -04:00
You can also filter for a substring in a name as this shows:
2021-08-21 08:54:14 -04:00
```console
2016-07-21 06:27:39 -04:00
$ docker ps --filter "name=nostalgic"
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2016-08-08 12:10:19 -04:00
715ebfcee040 busybox "top" 3 seconds ago Up 1 second i_am_nostalgic
2016-07-21 06:27:39 -04:00
9b6247364a03 busybox "top" 7 minutes ago Up 7 minutes nostalgic_stallman
673394ef1d4c busybox "top" 38 minutes ago Up 38 minutes nostalgic_shockley
```
2015-08-27 02:47:03 -04:00
2017-02-07 18:42:48 -05:00
#### exited
2015-08-27 02:47:03 -04:00
2016-07-21 06:27:39 -04:00
The `exited` filter matches containers by exist status code. For example, to
filter for containers that have exited successfully:
2021-08-21 08:54:14 -04:00
```console
2016-07-21 06:27:39 -04:00
$ docker ps -a --filter 'exited=0'
2015-06-21 16:41:38 -04:00
2016-07-21 06:27:39 -04:00
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ea09c3c82f6e registry:latest /srv/run.sh 2 weeks ago Exited (0) 2 weeks ago 127.0.0.1:5000->5000/tcp desperate_leakey
106ea823fe4e fedora:latest /bin/sh -c 'bash -l' 2 weeks ago Exited (0) 2 weeks ago determined_albattani
48ee228c9464 fedora:20 bash 2 weeks ago Exited (0) 2 weeks ago tender_torvalds
```
2015-06-21 16:41:38 -04:00
2017-02-07 18:42:48 -05:00
#### Filter by exit signal
2016-08-15 07:41:18 -04:00
You can use a filter to locate containers that exited with status of `137`
meaning a `SIGKILL(9)` killed them.
2021-08-21 08:54:14 -04:00
```console
2016-08-15 07:41:18 -04:00
$ docker ps -a --filter 'exited=137'
2017-02-07 18:42:48 -05:00
2016-08-15 07:41:18 -04:00
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b3e1c0ed5bfe ubuntu:latest "sleep 1000" 12 seconds ago Exited (137) 5 seconds ago grave_kowalevski
a2eb5558d669 redis:latest "/entrypoint.sh redi 2 hours ago Exited (137) 2 hours ago sharp_lalande
2016-10-19 13:25:45 -04:00
```
2016-08-15 07:41:18 -04:00
Any of these events result in a `137` status:
* the `init` process of the container is killed manually
* `docker kill` kills the container
* Docker daemon restarts which kills all running containers
2017-02-07 18:42:48 -05:00
#### status
2015-08-27 02:47:03 -04:00
2016-07-21 06:27:39 -04:00
The `status` filter matches containers by status. You can filter using
2016-08-15 07:33:56 -04:00
`created` , `restarting` , `running` , `removing` , `paused` , `exited` and `dead` . For example,
2016-07-21 06:27:39 -04:00
to filter for `running` containers:
2021-08-21 08:54:14 -04:00
```console
2016-07-21 06:27:39 -04:00
$ docker ps --filter status=running
2015-08-27 02:47:03 -04:00
2016-07-21 06:27:39 -04:00
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
715ebfcee040 busybox "top" 16 minutes ago Up 16 minutes i_am_nostalgic
d5c976d3c462 busybox "top" 23 minutes ago Up 23 minutes top
9b6247364a03 busybox "top" 24 minutes ago Up 24 minutes nostalgic_stallman
```
2015-08-27 02:47:03 -04:00
To filter for `paused` containers:
2021-08-21 08:54:14 -04:00
```console
2016-07-21 06:27:39 -04:00
$ docker ps --filter status=paused
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
673394ef1d4c busybox "top" About an hour ago Up About an hour (Paused) nostalgic_shockley
```
2015-08-27 02:47:03 -04:00
2017-02-07 18:42:48 -05:00
#### ancestor
2015-08-27 02:47:03 -04:00
2016-07-21 06:27:39 -04:00
The `ancestor` filter matches containers based on its image or a descendant of
it. The filter supports the following image representation:
2015-08-27 02:47:03 -04:00
2017-07-27 16:05:31 -04:00
- `image`
- `image:tag`
- `image:tag@digest`
- `short-id`
- `full-id`
2015-08-27 02:47:03 -04:00
2016-07-21 06:27:39 -04:00
If you don't specify a `tag` , the `latest` tag is used. For example, to filter
for containers that use the latest `ubuntu` image:
2021-08-21 08:54:14 -04:00
```console
2016-07-21 06:27:39 -04:00
$ docker ps --filter ancestor=ubuntu
2015-08-27 02:47:03 -04:00
2016-07-21 06:27:39 -04:00
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
919e1179bdb8 ubuntu-c1 "top" About a minute ago Up About a minute admiring_lovelace
5d1e4a540723 ubuntu-c2 "top" About a minute ago Up About a minute admiring_sammet
82a598284012 ubuntu "top" 3 minutes ago Up 3 minutes sleepy_bose
bab2a34ba363 ubuntu "top" 3 minutes ago Up 3 minutes focused_yonath
```
2015-08-27 02:47:03 -04:00
2016-07-21 06:27:39 -04:00
Match containers based on the `ubuntu-c1` image which, in this case, is a child
of `ubuntu` :
2015-08-27 02:47:03 -04:00
2021-08-21 08:54:14 -04:00
```console
2016-07-21 06:27:39 -04:00
$ docker ps --filter ancestor=ubuntu-c1
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
919e1179bdb8 ubuntu-c1 "top" About a minute ago Up About a minute admiring_lovelace
```
2015-08-27 02:47:03 -04:00
2022-06-06 09:02:58 -04:00
Match containers based on the `ubuntu` version `22.04` image:
2015-08-27 02:47:03 -04:00
2021-08-21 08:54:14 -04:00
```console
2022-06-06 09:02:58 -04:00
$ docker ps --filter ancestor=ubuntu:22.04
2016-07-21 06:27:39 -04:00
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2022-06-06 09:02:58 -04:00
82a598284012 ubuntu:22.04 "top" 3 minutes ago Up 3 minutes sleepy_bose
2016-07-21 06:27:39 -04:00
```
The following matches containers based on the layer `d0e008c6cf02` or an image
2016-10-28 11:57:41 -04:00
that have this layer in its layer stack.
2015-08-27 02:47:03 -04:00
2021-08-21 08:54:14 -04:00
```console
2016-07-21 06:27:39 -04:00
$ docker ps --filter ancestor=d0e008c6cf02
2015-08-27 02:47:03 -04:00
2016-07-21 06:27:39 -04:00
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2022-06-06 09:02:58 -04:00
82a598284012 ubuntu:22.04 "top" 3 minutes ago Up 3 minutes sleepy_bose
2016-07-21 06:27:39 -04:00
```
2015-08-27 02:47:03 -04:00
2017-02-07 18:42:48 -05:00
#### Create time
##### before
2016-02-09 14:37:33 -05:00
2016-07-21 06:27:39 -04:00
The `before` filter shows only containers created before the container with
given id or name. For example, having these containers created:
2021-08-21 08:54:14 -04:00
```console
2016-07-21 06:27:39 -04:00
$ docker ps
2016-02-09 14:37:33 -05:00
2016-07-21 06:27:39 -04:00
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9c3527ed70ce busybox "top" 14 seconds ago Up 15 seconds desperate_dubinsky
4aace5031105 busybox "top" 48 seconds ago Up 49 seconds focused_hamilton
6e63f6ff38b0 busybox "top" About a minute ago Up About a minute distracted_fermat
```
2016-02-09 14:37:33 -05:00
Filtering with `before` would give:
2021-08-21 08:54:14 -04:00
```console
2016-07-21 06:27:39 -04:00
$ docker ps -f before=9c3527ed70ce
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4aace5031105 busybox "top" About a minute ago Up About a minute focused_hamilton
6e63f6ff38b0 busybox "top" About a minute ago Up About a minute distracted_fermat
```
2016-02-09 14:37:33 -05:00
2017-02-07 18:42:48 -05:00
##### since
2016-02-09 14:37:33 -05:00
2016-07-21 06:27:39 -04:00
The `since` filter shows only containers created since the container with given
id or name. For example, with the same containers as in `before` filter:
2016-02-09 14:37:33 -05:00
2021-08-21 08:54:14 -04:00
```console
2016-07-21 06:27:39 -04:00
$ docker ps -f since=6e63f6ff38b0
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9c3527ed70ce busybox "top" 10 minutes ago Up 10 minutes desperate_dubinsky
4aace5031105 busybox "top" 10 minutes ago Up 10 minutes focused_hamilton
```
2016-02-09 14:37:33 -05:00
2017-02-07 18:42:48 -05:00
#### volume
2016-02-03 17:46:01 -05:00
2016-07-21 06:27:39 -04:00
The `volume` filter shows only containers that mount a specific volume or have
a volume mounted in a specific path:
2016-02-03 17:46:01 -05:00
2021-08-21 08:54:14 -04:00
```console
2016-07-21 06:27:39 -04:00
$ docker ps --filter volume=remote-volume --format "table {{.ID}}\t{{.Mounts}}"
2020-04-19 09:43:08 -04:00
2016-07-21 06:27:39 -04:00
CONTAINER ID MOUNTS
9c3527ed70ce remote-volume
2016-02-03 17:46:01 -05:00
2016-07-21 06:27:39 -04:00
$ docker ps --filter volume=/data --format "table {{.ID}}\t{{.Mounts}}"
2020-04-19 09:43:08 -04:00
2016-07-21 06:27:39 -04:00
CONTAINER ID MOUNTS
9c3527ed70ce remote-volume
2017-02-07 18:42:48 -05:00
```
2016-02-03 17:46:01 -05:00
2017-02-07 18:42:48 -05:00
#### network
2016-05-27 15:20:31 -04:00
2016-06-05 20:04:33 -04:00
The `network` filter shows only containers that are connected to a network with
a given name or id.
2016-05-27 15:20:31 -04:00
2016-06-05 20:04:33 -04:00
The following filter matches all containers that are connected to a network
with a name containing `net1` .
2016-05-27 15:20:31 -04:00
2021-08-21 08:54:14 -04:00
```console
2016-06-05 20:04:33 -04:00
$ docker run -d --net=net1 --name=test1 ubuntu top
$ docker run -d --net=net2 --name=test2 ubuntu top
$ docker ps --filter network=net1
2016-07-21 06:27:39 -04:00
2016-06-05 20:04:33 -04:00
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9d4893ed80fe ubuntu "top" 10 minutes ago Up 10 minutes test1
```
The network filter matches on both the network's name and id. The following
example shows all containers that are attached to the `net1` network, using
the network id as a filter;
2021-08-21 08:54:14 -04:00
```console
2016-06-05 20:04:33 -04:00
$ docker network inspect --format "{{.ID}}" net1
2016-07-21 06:27:39 -04:00
2016-06-05 20:04:33 -04:00
8c0b4110ae930dbe26b258de9bc34a03f98056ed6f27f991d32919bfe401d7c5
2016-05-27 15:20:31 -04:00
2016-06-05 20:04:33 -04:00
$ docker ps --filter network=8c0b4110ae930dbe26b258de9bc34a03f98056ed6f27f991d32919bfe401d7c5
2016-07-21 06:27:39 -04:00
2016-06-05 20:04:33 -04:00
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9d4893ed80fe ubuntu "top" 10 minutes ago Up 10 minutes test1
```
2015-06-21 16:41:38 -04:00
2017-02-07 18:42:48 -05:00
#### publish and expose
2016-10-15 18:53:06 -04:00
The `publish` and `expose` filters show only containers that have published or exposed port with a given port
number, port range, and/or protocol. The default protocol is `tcp` when not specified.
The following filter matches all containers that have published port of 80:
2021-08-21 08:54:14 -04:00
```console
2016-10-15 18:53:06 -04:00
$ docker run -d --publish=80 busybox top
$ docker run -d --expose=8080 busybox top
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9833437217a5 busybox "top" 5 seconds ago Up 4 seconds 8080/tcp dreamy_mccarthy
fc7e477723b7 busybox "top" 50 seconds ago Up 50 seconds 0.0.0.0:32768->80/tcp admiring_roentgen
$ docker ps --filter publish=80
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fc7e477723b7 busybox "top" About a minute ago Up About a minute 0.0.0.0:32768->80/tcp admiring_roentgen
```
The following filter matches all containers that have exposed TCP port in the range of `8000-8080` :
2021-08-21 08:54:14 -04:00
```console
2016-10-15 18:53:06 -04:00
$ docker ps --filter expose=8000-8080/tcp
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9833437217a5 busybox "top" 21 seconds ago Up 19 seconds 8080/tcp dreamy_mccarthy
```
The following filter matches all containers that have exposed UDP port `80` :
2021-08-21 08:54:14 -04:00
```console
2016-10-15 18:53:06 -04:00
$ docker ps --filter publish=80/udp
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
```
2022-03-30 09:05:29 -04:00
### <a name=format></a> Format the output (--format)
2015-07-17 00:03:16 -04:00
2016-07-21 06:27:39 -04:00
The formatting option (`--format`) pretty-prints container output using a Go
template.
2015-07-17 00:03:16 -04:00
Valid placeholders for the Go template are listed below:
2017-06-21 13:31:03 -04:00
| Placeholder | Description |
|:--------------|:------------------------------------------------------------------------------------------------|
| `.ID` | Container ID |
| `.Image` | Image ID |
| `.Command` | Quoted command |
| `.CreatedAt` | Time when the container was created. |
| `.RunningFor` | Elapsed time since the container was started. |
| `.Ports` | Exposed ports. |
2019-07-12 07:10:08 -04:00
| `.State` | Container status (for example; "created", "running", "exited"). |
| `.Status` | Container status with details about duration and health-status. |
2017-06-21 13:31:03 -04:00
| `.Size` | Container disk size. |
| `.Names` | Container names. |
| `.Labels` | All labels assigned to the container. |
| `.Label` | Value of a specific label for this container. For example `'{{.Label "com.docker.swarm.cpu"}}'` |
| `.Mounts` | Names of the volumes mounted in this container. |
| `.Networks` | Names of the networks attached to this container. |
2016-07-21 06:27:39 -04:00
When using the `--format` option, the `ps` command will either output the data
exactly as the template declares or, when using the `table` directive, includes
column headers as well.
The following example uses a template without headers and outputs the `ID` and
2020-04-19 11:23:09 -04:00
`Command` entries separated by a colon (`:`) for all running containers:
2016-07-21 06:27:39 -04:00
2021-08-21 08:54:14 -04:00
```console
2016-07-21 06:27:39 -04:00
$ docker ps --format "{{.ID}}: {{.Command}}"
a87ecb4f327c: /bin/sh -c #(nop) MA
01946d9d34d8: /bin/sh -c #(nop) MA
c1d3b0166030: /bin/sh -c yum -y up
41d50ecd2f57: /bin/sh -c #(nop) MA
```
2015-07-17 00:03:16 -04:00
To list all running containers with their labels in a table format you can use:
2021-08-21 08:54:14 -04:00
```console
2016-07-21 06:27:39 -04:00
$ docker ps --format "table {{.ID}}\t{{.Labels}}"
CONTAINER ID LABELS
a87ecb4f327c com.docker.swarm.node=ubuntu,com.docker.swarm.storage=ssd
01946d9d34d8
c1d3b0166030 com.docker.swarm.node=debian,com.docker.swarm.cpu=6
41d50ecd2f57 com.docker.swarm.node=fedora,com.docker.swarm.cpu=3,com.docker.swarm.storage=ssd
2019-02-27 16:03:09 -05:00
```
2021-03-09 18:49:33 -05:00
To list all running containers in JSON format, use the `json` directive:
2022-03-30 08:33:44 -04:00
2021-03-09 18:49:33 -05:00
```console
$ docker ps --format json
{"Command":"\"/docker-entrypoint.…\"","CreatedAt":"2021-03-10 00:15:05 +0100 CET","ID":"a762a2b37a1d","Image":"nginx","Labels":"maintainer=NGINX Docker Maintainers \u003cdocker-maint@nginx.com\u003e","LocalVolumes":"0","Mounts":"","Names":"boring_keldysh","Networks":"bridge","Ports":"80/tcp","RunningFor":"4 seconds ago","Size":"0B","State":"running","Status":"Up 3 seconds"}
2022-03-30 08:33:44 -04:00
```