Docker Remove Stopped Containers

Last updated on 2023-03-08

The short answer

To remove (prune) all stopped Docker containers at once, you can use the following command:

 $ docker container prune

If you want to remove these containers without being prompted for confirmation, you can use the [.inline-code]-f[.inline-code] flag (short for force):

 $ docker container prune -f

[#warp-workflows]Use Warp's Workflows feature to easily recall this syntax[#warp-workflows]

If you’re using Warp as your terminal and you need to quickly retrieve this command, you can use Warp's Workflows feature by pressing [.inline-code]CTRL-SHIFT-R[.inline-code] and typing [.inline-code]remove stopped containers[.inline-code]:

Then pressing [.inline-code]ENTER[.inline-code] to use the suggested command:

[#filtering-by-creation-time]Filtering stopped containers by creation time[#filtering-by-creation-time]

The [.inline-code]docker container prune[.inline-code] command offers the possibility to filter the containers that will be removed using the [.inline-code]--filter[.inline-code] flag.

To remove all stopped containers that were created before a certain time, you can use the [.inline-code]until=<timestamp>[.inline-code] filter, where [.inline-code]timestamp[.inline-code] can be a Unix timestamp, a date formatted timestamp, or Go duration string.

For example:

 $ docker container prune --filter "until=10m"
 $ docker container prune --filter "until=2023-01-15"

[#removing-all-stopped-containers]Removing all stopped containers using [.inline-code]docker rm[.inline-code][#removing-all-stopped-containers]

The [.inline-code]docker rm[.inline-code] command is used to remove one or more stopped containers using their name or ID.

 $ docker rm  …
 $ docker rm 

[#list-show-IDs]List and show the IDs of stopped containers with [.inline-code]docker ps[.inline-code][#list-show-IDs]

To get a list of all stopped containers IDs – which are containers with a status equivalent to [.inline-code]exited[.inline-code] or [.inline-code]dead[.inline-code] – you can use the [.inline-code]docker ps[.inline-code] command combined with the [.inline-code]--filter[.inline-code] and the [.inline-code]-q[.inline-code] flags:

 $ docker ps --filter "status=exited" --filter "status=dead" -q


  • The [.inline-code]--filter[.inline-code] flag is used to filter the list of containers returned by the [.inline-code]docker ps[.inline-code] command.
  • The [.inline-code]-q[.inline-code] flag is used to return their IDs only.

[#removing-stopped-containers]Removing all stopped containers[#removing-stopped-containers]

To remove all stopped containers at once with [.inline-code]docker rm[.inline-code], you can combine it with the previous [.inline-code]docker ps[.inline-code] command using the command substitution syntax:

 $ docker rm $(docker ps --filter "status=exited" --filter "status=dead" -q)

Where the expression contained in parenthesis [.inline-code]$(expression)[.inline-code] will be replaced by its result, which in this case will be the list of all stopped containers IDs.