2015-06-21 16:41:38 -04:00
|
|
|
# rm
|
|
|
|
|
2023-01-06 13:04:05 -05:00
|
|
|
<!---MARKER_GEN_START-->
|
2016-07-07 14:43:18 -04:00
|
|
|
Remove one or more containers
|
2015-06-21 16:41:38 -04:00
|
|
|
|
2023-01-06 13:04:05 -05:00
|
|
|
### Aliases
|
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
|
|
|
|
2023-04-09 07:36:36 -04:00
|
|
|
`docker container rm`, `docker container remove`, `docker rm`
|
2023-01-06 13:04:05 -05:00
|
|
|
|
|
|
|
### Options
|
|
|
|
|
|
|
|
| Name | Type | Default | Description |
|
|
|
|
|:------------------------------------------|:-----|:--------|:--------------------------------------------------------|
|
|
|
|
| [`-f`](#force), [`--force`](#force) | | | Force the removal of a running container (uses SIGKILL) |
|
|
|
|
| [`-l`](#link), [`--link`](#link) | | | Remove the specified link |
|
|
|
|
| [`-v`](#volumes), [`--volumes`](#volumes) | | | Remove anonymous volumes associated with the container |
|
|
|
|
|
|
|
|
|
|
|
|
<!---MARKER_GEN_END-->
|
2015-06-21 16:41:38 -04:00
|
|
|
|
|
|
|
## Examples
|
|
|
|
|
2017-02-07 18:42:48 -05:00
|
|
|
### Remove a container
|
2015-06-21 16:41:38 -04:00
|
|
|
|
2020-04-19 09:43:08 -04:00
|
|
|
This removes the container referenced under the link `/redis`.
|
2015-06-21 16:41:38 -04:00
|
|
|
|
2021-08-21 08:54:14 -04:00
|
|
|
```console
|
2017-02-07 18:42:48 -05:00
|
|
|
$ docker rm /redis
|
|
|
|
|
|
|
|
/redis
|
|
|
|
```
|
|
|
|
|
2023-01-06 13:28:29 -05:00
|
|
|
### <a name="link"></a> Remove a link specified with `--link` on the default bridge network (--link)
|
2015-06-21 16:41:38 -04:00
|
|
|
|
2020-04-19 09:43:08 -04:00
|
|
|
This removes the underlying link between `/webapp` and the `/redis`
|
2017-02-07 18:42:48 -05:00
|
|
|
containers on the default bridge network, removing all network communication
|
|
|
|
between the two containers. This does not apply when `--link` is used with
|
|
|
|
user-specified networks.
|
|
|
|
|
2021-08-21 08:54:14 -04:00
|
|
|
```console
|
2017-02-07 18:42:48 -05:00
|
|
|
$ docker rm --link /webapp/redis
|
|
|
|
|
|
|
|
/webapp/redis
|
|
|
|
```
|
|
|
|
|
2023-01-06 13:28:29 -05:00
|
|
|
### <a name="force"></a> Force-remove a running container (--force)
|
2017-02-07 18:42:48 -05:00
|
|
|
|
2020-04-19 09:43:08 -04:00
|
|
|
This command force-removes a running container.
|
2015-06-21 16:41:38 -04:00
|
|
|
|
2021-08-21 08:54:14 -04:00
|
|
|
```console
|
2017-02-07 18:42:48 -05:00
|
|
|
$ docker rm --force redis
|
2015-06-21 16:41:38 -04:00
|
|
|
|
2017-02-07 18:42:48 -05:00
|
|
|
redis
|
|
|
|
```
|
|
|
|
|
|
|
|
The main process inside the container referenced under the link `redis` will receive
|
2015-06-21 16:41:38 -04:00
|
|
|
`SIGKILL`, then the container will be removed.
|
|
|
|
|
2017-02-07 18:42:48 -05:00
|
|
|
### Remove all stopped containers
|
|
|
|
|
2021-03-09 07:12:55 -05:00
|
|
|
Use the [`docker container prune`](container_prune.md) command to remove all
|
|
|
|
stopped containers, or refer to the [`docker system prune`](system_prune.md)
|
|
|
|
command to remove unused containers in addition to other Docker resources, such
|
|
|
|
as (unused) images and networks.
|
|
|
|
|
|
|
|
Alternatively, you can use the `docker ps` with the `-q` / `--quiet` option to
|
|
|
|
generate a list of container IDs to remove, and use that list as argument for
|
2021-03-11 09:36:02 -05:00
|
|
|
the `docker rm` command.
|
2021-03-09 07:12:55 -05:00
|
|
|
|
|
|
|
Combining commands can be more flexible, but is less portable as it depends
|
|
|
|
on features provided by the shell, and the exact syntax may differ depending on
|
|
|
|
what shell is used. To use this approach on Windows, consider using PowerShell
|
|
|
|
or Bash.
|
|
|
|
|
|
|
|
The example below uses `docker ps -q` to print the IDs of all containers that
|
|
|
|
have exited (`--filter status=exited`), and removes those containers with
|
|
|
|
the `docker rm` command:
|
|
|
|
|
|
|
|
```console
|
|
|
|
$ docker rm $(docker ps --filter status=exited -q)
|
2017-02-07 18:42:48 -05:00
|
|
|
```
|
2015-06-21 16:41:38 -04:00
|
|
|
|
2023-12-13 18:06:16 -05:00
|
|
|
Or, using the `xargs` Linux utility:
|
2021-03-09 07:12:55 -05:00
|
|
|
|
|
|
|
```console
|
|
|
|
$ docker ps --filter status=exited -q | xargs docker rm
|
|
|
|
```
|
2016-01-21 21:57:53 -05:00
|
|
|
|
2023-01-06 13:28:29 -05:00
|
|
|
### <a name="volumes"></a> Remove a container and its volumes (-v, --volumes)
|
2017-02-07 18:42:48 -05:00
|
|
|
|
2021-08-21 08:54:14 -04:00
|
|
|
```console
|
2022-03-30 09:05:29 -04:00
|
|
|
$ docker rm --volumes redis
|
2017-02-07 18:42:48 -05:00
|
|
|
redis
|
|
|
|
```
|
2016-01-21 21:57:53 -05:00
|
|
|
|
2020-04-19 09:43:08 -04:00
|
|
|
This command removes the container and any volumes associated with it.
|
2016-01-21 21:57:53 -05:00
|
|
|
Note that if a volume was specified with a name, it will not be removed.
|
|
|
|
|
2017-02-07 18:42:48 -05:00
|
|
|
### Remove a container and selectively remove volumes
|
|
|
|
|
2021-08-21 08:54:14 -04:00
|
|
|
```console
|
2017-02-07 18:42:48 -05:00
|
|
|
$ docker create -v awesome:/foo -v /bar --name hello redis
|
|
|
|
hello
|
2020-04-19 09:43:08 -04:00
|
|
|
|
2017-02-07 18:42:48 -05:00
|
|
|
$ docker rm -v hello
|
|
|
|
```
|
2016-01-21 21:57:53 -05:00
|
|
|
|
2020-04-19 09:43:08 -04:00
|
|
|
In this example, the volume for `/foo` remains intact, but the volume for
|
|
|
|
`/bar` is removed. The same behavior holds for volumes inherited with
|
2016-01-21 21:57:53 -05:00
|
|
|
`--volumes-from`.
|