mirror of https://github.com/docker/docs.git
Add general topic about pruning objects (#4089)
This commit is contained in:
parent
ea60e7f812
commit
f97da2ce2e
|
@ -252,6 +252,8 @@ guides:
|
||||||
title: Start containers automatically
|
title: Start containers automatically
|
||||||
- path: /engine/admin/resource_constraints/
|
- path: /engine/admin/resource_constraints/
|
||||||
title: Limit a container's resources
|
title: Limit a container's resources
|
||||||
|
- path: /engine/admin/pruning/
|
||||||
|
title: Prune unused Docker objects
|
||||||
- path: /engine/admin/live-restore/
|
- path: /engine/admin/live-restore/
|
||||||
title: Keep containers alive during daemon downtime
|
title: Keep containers alive during daemon downtime
|
||||||
- path: /engine/admin/systemd/
|
- path: /engine/admin/systemd/
|
||||||
|
|
|
@ -0,0 +1,177 @@
|
||||||
|
---
|
||||||
|
description: Pruning unused objects
|
||||||
|
keywords: pruning, prune, images, volumes, containers, networks, disk, administration, garbage collection
|
||||||
|
title: Prune unused Docker objects
|
||||||
|
---
|
||||||
|
|
||||||
|
Docker takes a conservative approach to cleaning up unused objects (often
|
||||||
|
referred to as "garbage collection"), such as images, containers, volumes, and
|
||||||
|
networks: these objects are generally not removed unless you explicitly ask
|
||||||
|
Docker to do so. This can cause Docker to use extra disk space. For each type of
|
||||||
|
object, Docker provides a `prune` command. In addition, you can use `docker
|
||||||
|
system prune` to clean up multiple types of objects at once. This topic shows
|
||||||
|
how to use these `prune` commands.
|
||||||
|
|
||||||
|
## Prune images
|
||||||
|
|
||||||
|
The `docker image prune` command allows you to clean up unused images. By
|
||||||
|
default, `docker image prune` only cleans up _dangling_ images. A dangling image
|
||||||
|
is one that is not tagged and is not referenced by any container. To remove
|
||||||
|
dangling images:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ docker image prune
|
||||||
|
|
||||||
|
WARNING! This will remove all dangling images.
|
||||||
|
Are you sure you want to continue? [y/N] y
|
||||||
|
```
|
||||||
|
|
||||||
|
To remove all images which are not used by existing containers, use the `-a`
|
||||||
|
flag:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ docker image prune -a
|
||||||
|
|
||||||
|
WARNING! This will remove all images without at least one container associated to them.
|
||||||
|
Are you sure you want to continue? [y/N] y
|
||||||
|
```
|
||||||
|
|
||||||
|
By default, you are prompted to continue. To bypass the prompt, use the `-f` or
|
||||||
|
`--force` flag.
|
||||||
|
|
||||||
|
You can limit which images are pruned using filtering expressions with the
|
||||||
|
`--filter` flag. For example, to only consider images created more than 24
|
||||||
|
hours ago:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ docker image prune -a --filter "until=24h"
|
||||||
|
```
|
||||||
|
|
||||||
|
Other filtering expressions are available. See the
|
||||||
|
[`docker image prune` reference](/engine/reference/commandline/image_prune.md)
|
||||||
|
for more examples.
|
||||||
|
|
||||||
|
## Prune containers
|
||||||
|
|
||||||
|
When you stop a container, it is not automatically removed unless you started it
|
||||||
|
with the `--rm` flag. To see all containers on the Docker host, including
|
||||||
|
stopped containers, use `docker ps -a`. You may be surprised how many containers
|
||||||
|
exist, especially on a development system! A stopped container's writable layers
|
||||||
|
still take up disk space. To clean this up, you can use the `docker container
|
||||||
|
prune` command.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ docker container prune
|
||||||
|
|
||||||
|
WARNING! This will remove all stopped containers.
|
||||||
|
Are you sure you want to continue? [y/N] y
|
||||||
|
```
|
||||||
|
|
||||||
|
By default, you are prompted to continue. To bypass the prompt, use the `-f` or
|
||||||
|
`--force` flag.
|
||||||
|
|
||||||
|
By default, all stopped containers are removed. You can limit the scope using
|
||||||
|
the `--filter` flag. For instance, the following command only removes
|
||||||
|
stopped containers older than 24 hours:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ docker container prune --filter "until=24h"
|
||||||
|
```
|
||||||
|
|
||||||
|
Other filtering expressions are available. See the
|
||||||
|
[`docker container prune` reference](/engine/reference/commandline/container_prune.md)
|
||||||
|
for more examples.
|
||||||
|
|
||||||
|
## Prune volumes
|
||||||
|
|
||||||
|
Volumes can be used by one or more containers, and take up space on the Docker
|
||||||
|
host. Volumes are never removed automatically, because to do so could destroy
|
||||||
|
data.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ docker volume prune
|
||||||
|
|
||||||
|
WARNING! This will remove all volumes not used by at least one container.
|
||||||
|
Are you sure you want to continue? [y/N] y
|
||||||
|
```
|
||||||
|
|
||||||
|
By default, you are prompted to continue. To bypass the prompt, use the `-f` or
|
||||||
|
`--force` flag.
|
||||||
|
|
||||||
|
By default, all unused volumes are removed. You can limit the scope using
|
||||||
|
the `--filter` flag. For instance, the following command only removes
|
||||||
|
volumes which are not labelled with the `keep` label:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ docker volume prune --filter "label!=keep"
|
||||||
|
```
|
||||||
|
|
||||||
|
Other filtering expressions are available. See the
|
||||||
|
[`docker volume prune` reference](/engine/reference/commandline/volume_prune.md)
|
||||||
|
for more examples.
|
||||||
|
|
||||||
|
## Prune networks
|
||||||
|
|
||||||
|
Docker networks don't take up much disk space, but they do create `iptables`
|
||||||
|
rules, bridge network devices, and routing table entries. To clean these things
|
||||||
|
up, you can use `docker network prune` to clean up networks which aren't used
|
||||||
|
by any containers.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ docker network prune
|
||||||
|
|
||||||
|
WARNING! This will remove all networks not used by at least one container.
|
||||||
|
Are you sure you want to continue? [y/N] y
|
||||||
|
```
|
||||||
|
|
||||||
|
By default, you are prompted to continue. To bypass the prompt, use the `-f` or
|
||||||
|
`--force` flag.
|
||||||
|
|
||||||
|
By default, all unused networks are removed. You can limit the scope using
|
||||||
|
the `--filter` flag. For instance, the following command only removes
|
||||||
|
networks older than 24 hours:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ docker network prune --filter "until=24h"
|
||||||
|
```
|
||||||
|
|
||||||
|
Other filtering expressions are available. See the
|
||||||
|
[`docker network prune` reference](/engine/reference/commandline/network_prune.md)
|
||||||
|
for more examples.
|
||||||
|
|
||||||
|
## Prune everything
|
||||||
|
|
||||||
|
The `docker system prune` command is a shortcut that prunes images, containers,
|
||||||
|
and networks. In Docker 17.06.0 and earlier, volumes are also pruned. In Docker
|
||||||
|
17.06.1 and higher, you must specify the `--volumes` flag for
|
||||||
|
`docker system prune` to prune volumes.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ docker system prune
|
||||||
|
|
||||||
|
WARNING! This will remove:
|
||||||
|
- all stopped containers
|
||||||
|
- all networks not used by at least one container
|
||||||
|
- all dangling images
|
||||||
|
- all build cache
|
||||||
|
Are you sure you want to continue? [y/N] y
|
||||||
|
```
|
||||||
|
|
||||||
|
If you are on Docker 17.06.1 or higher and want to also prune volumes, add
|
||||||
|
the `--volumes` flag:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ docker system prune --volumes
|
||||||
|
|
||||||
|
WARNING! This will remove:
|
||||||
|
- all stopped containers
|
||||||
|
- all networks not used by at least one container
|
||||||
|
- all volumes not used by at least one container
|
||||||
|
- all dangling images
|
||||||
|
- all build cache
|
||||||
|
Are you sure you want to continue? [y/N] y
|
||||||
|
```
|
||||||
|
|
||||||
|
By default, you are prompted to continue. To bypass the prompt, use the `-f` or
|
||||||
|
`--force` flag.
|
||||||
|
|
Loading…
Reference in New Issue