docker system prune --volumes removes more than volumes
Description
Running docker system prune --volumes removes also networks and images.
Reproduce
- Run
docker system prune --volumes - See result of deleted networks and images
Expected behavior
docker system prune --volumes to remove only volumes
docker version
Client: Docker Engine - Community
Version: 27.0.3
API version: 1.46
Go version: go1.21.11
Git commit: 7d4bcd8
Built: Sat Jun 29 00:02:23 2024
OS/Arch: linux/amd64
Context: default
Server: Docker Engine - Community
Engine:
Version: 27.0.3
API version: 1.46 (minimum version 1.24)
Go version: go1.21.11
Git commit: 662f78c
Built: Sat Jun 29 00:02:23 2024
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.7.19
GitCommit: 2bf793ef6dc9a18e00cb12efb64355c2c9d5eb41
runc:
Version: 1.7.19
GitCommit: v1.1.13-0-g58aa920
docker-init:
Version: 0.19.0
GitCommit: de40ad0
docker info
❯ docker info
Client: Docker Engine - Community
Version: 27.0.3
Context: default
Debug Mode: false
Plugins:
buildx: Docker Buildx (Docker Inc.)
Version: v0.15.1
Path: /usr/libexec/docker/cli-plugins/docker-buildx
compose: Docker Compose (Docker Inc.)
Version: v2.28.1
Path: /usr/libexec/docker/cli-plugins/docker-compose
Server:
Containers: 1
Running: 1
Paused: 0
Stopped: 0
Images: 62
Server Version: 27.0.3
Storage Driver: overlay2
Backing Filesystem: extfs
Supports d_type: true
Using metacopy: false
Native Overlay Diff: true
userxattr: false
Logging Driver: json-file
Cgroup Driver: systemd
Cgroup Version: 2
Plugins:
Volume: local
Network: bridge host ipvlan macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file local splunk syslog
Swarm: inactive
Runtimes: io.containerd.runc.v2 runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 2bf793ef6dc9a18e00cb12efb64355c2c9d5eb41
runc version: v1.1.13-0-g58aa920
init version: de40ad0
Security Options:
apparmor
seccomp
Profile: builtin
cgroupns
Kernel Version: 6.8.0-38-generic
Operating System: Ubuntu 24.04 LTS
OSType: linux
Architecture: x86_64
CPUs: 20
Total Memory: 62.54GiB
Name: skois-tuxedo-infinity-book-pro-gen8-mk1
ID: 94c40e6d-b572-4a2f-a475-02a342b0cf77
Docker Root Dir: /var/lib/docker
Debug Mode: false
Experimental: false
Insecure Registries:
127.0.0.0/8
Live Restore Enabled: false
Additional Info
❯ docker system prune --volumes
WARNING! This will remove:
- all stopped containers
- all networks not used by at least one container
- all anonymous volumes not used by at least one container
- all dangling images
- unused build cache
Are you sure you want to continue? [y/N] y
Deleted Networks:
8caff21ff04f28e755560477970075b7_default
f9be94402e59ef962fdde322e0e94f0c_default
29e9cd760014396211de8324e775d7bb_default
b655b06ebcfaeb560954ed06899eb1bf_default
14c34e35e19dd83aa1077259a1c1c46d_default
323e14b0d04bbbf5bfa8015d6e444e6e_default
b9412eeb2d979141074dc9177d938528_default
0664147dbf1220bbbc5d60b9f7985d75_default
339b39f85e2961cf31d1d457b29dd414_default
7e410146be4767c26735a0f09a1e071d_default
285969ed2330fceaf96c5f616cd78f2e_default
b4eb90af7497082c7ce56b072e34a3c8_default
835b656378aae447ccb9f2d4add0d831_default
9d8008d4465439b8a65f573985378932_default
2ef67ebea4d6d438d89b1b29b20163a4_default
Deleted Images:
deleted: sha256:7bf54eaf638f0e6f39ee4f131ccdb712943b26027ac8bf12e4116d8cb04ef780
deleted: sha256:9962810a3bd037598dd325dc501f5f7c7eccbc4eed7a563e2326a9476a9e67be
deleted: sha256:86802713e51740b4194a9461ec140f903cb9145541f073635fd7653dc774838d
deleted: sha256:15553b5efb08eefc2559f4be8e7ff335cfc5f753089fea798125463d7d3673b0
deleted: sha256:9656a2ff7c0ee43266f5c8bc559b626cbb55eff06c72d763fac70776102625cb
deleted: sha256:7dc77cb4b06d9309efb903f29edf48dd501c64f8752576c1a337b9e0e67635e6
deleted: sha256:709aad1d6077724c77e649c36f5b1cf195da9c1fac897d47fbe130ac841ca1ba
deleted: sha256:c4e00f7fc5fac03a089b2a35bb6c0a0731ce1facc489bbdce12bf97dea0b5300
deleted: sha256:82d0363588e67aa94840b4a379427642576523c0f52cf4150f297520866c4d98
deleted: sha256:1e38444538c5377a914505dabd70496baf35df3ea9a86fa4e7dab0d8fed7c03c
deleted: sha256:6bcfdb238ad436fafa3bee9c255739b9ee85d0fc04eb1fbfa0668d4d736f9d48
deleted: sha256:f5ce22d1501f61ae02f0f45c6d616a9eb52db7823813ed14d5cd55d1e4626eef
deleted: sha256:fed265adf6a1b1ca4fa9305e2302d18a3f9bbd939218991d5c49b75c288975f7
deleted: sha256:2cbb4bdde7c0d066c68b54095c9439c01ad4024f1b4bc8317432df2b0c7ebff2
deleted: sha256:911b96b0414f06865468540bb6053f6cde6f74e29de22e8acce9a349065241fb
deleted: sha256:999cc1e272b8e6b8db47d65a5b12d2aa1b97e2cb462d1a2273dbdd8301407397
deleted: sha256:ae32236da3caa41c1fa9ffc6b0cd4f215b89c2ab89699aab13ac6a989fd5356c
deleted: sha256:47a37d8fc71defff69b1418ac88c70812efd9e5f8e0e6bd4bd4b02c1a7cdce88
Total reclaimed space: 10.62GB
This is the expected behavior; docker system prune is meant to remove all unused objects. The --volumes flag was added as a "safety" options, because volumes are normally used to store persistent data, which may be important data (e.g. data for a database); in some cases such volumes may not be currently used, but still important.
If you want to only prune volumes, use docker volumes prune instead.
From the documentation; https://docs.docker.com/reference/cli/docker/system/prune/#description
The command description could probably use some improving though, because it only prints the short description (Remove unused data); maybe we can make the commands use the long description (if available);
docker system prune --help
Usage: docker system prune [OPTIONS]
Remove unused data
Options:
-a, --all Remove all unused images not just dangling ones
--filter filter Provide filter values (e.g. "label=<key>=<value>")
-f, --force Do not prompt for confirmation
--volumes Prune anonymous volumes