docker / docker/cli

[feat] docker volume prune --filter name=regex

Open
#3,027 2 comments 7 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

area/ux kind/enhancement
Dominant language
Go
Stars
6.1k
Forks
2.2k
Avg merge
1d 15h
Merged PRs (30d)
43

Description

Description

docker volume prune doesn't accept --filter name=regex like docker volume ls does.

I can list dangling volumes without a proper name with a regex matching sha256 hash:

docker volume ls --filter dangling=true --filter name='^[0-9a-f]{64}$'

Now I would like to delete these volumes. One way to do that would be:

docker volume ls --filter name='^[0-9a-f]{64}$' --dangling=true --format '{{.Name}}' |
    xargs -r docker volume rm

But I would really prefer:

docker volume prune --filter name='^[0-9a-f]{64}$'`

Steps to reproduce the issue:

  1. docker volume prune --filter name='^[0-9a-f]{64}$'

Describe the results you received:
Error response from daemon: Invalid filter 'name'

Describe the results you expected:
Deleted Volumes:
...

Additional information you deem important (e.g. issue happens only occasionally):

Output of docker version:

Client: Docker Engine - Community
 Version:           20.10.5
 API version:       1.41
 Go version:        go1.13.15
 Git commit:        55c4c88
 Built:             Tue Mar  2 20:18:20 2021
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.5
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.13.15
  Git commit:       363e9a8
  Built:            Tue Mar  2 20:16:15 2021
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.4.4
  GitCommit:        05f951a3781f4f2c1911b05e61c160e9c30eaa8e
 runc:
  Version:          1.0.0-rc93
  GitCommit:        12644e614e25b05da6fd08a38ffa0cfe1903fdec
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

Output of docker info:

Client:
 Context:    default
 Debug Mode: false
 Plugins:
  app: Docker App (Docker Inc., v0.9.1-beta3)
  buildx: Build with BuildKit (Docker Inc., v0.5.1-docker)

Server:
 Containers: 16
  Running: 2
  Paused: 0
  Stopped: 14
 Images: 68
 Server Version: 20.10.5
 Storage Driver: overlay2
  Backing Filesystem: extfs
  Supports d_type: true
  Native Overlay Diff: true
 Logging Driver: json-file
 Cgroup Driver: cgroupfs
 Cgroup Version: 1
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
 Swarm: inactive
 Runtimes: io.containerd.runtime.v1.linux runc io.containerd.runc.v2
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: 05f951a3781f4f2c1911b05e61c160e9c30eaa8e
 runc version: 12644e614e25b05da6fd08a38ffa0cfe1903fdec
 init version: de40ad0
 Security Options:
  apparmor
  seccomp
   Profile: default
  userns
 Kernel Version: 5.4.0-67-generic
 Operating System: Linux Mint 20.1
 OSType: linux
 Architecture: x86_64
 CPUs: 4
 Total Memory: 7.507GiB
 Name: ~
 ID: ~
 Docker Root Dir: /var/lib/docker/200000.200000
 Debug Mode: false
 Registry: https://index.docker.io/v1/
 Labels:
 Experimental: false
 Insecure Registries:
  127.0.0.0/8
 Live Restore Enabled: false

Additional environment details (AWS, VirtualBox, physical, etc.):
n/a

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the docker volume prune --filter command and compare its filter handling with docker volume ls --filter name=regex. Trace how the prune request reaches Docker Engine, then add support for the requested name filter and verify that only matching dangling volumes are deleted and reported.

Written by the indexing model from the issue text.

Assessment

Tech stack
docker, go
Domain
cli
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.