Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

Inconsistent behavior between `label` and `label!` filters in `volume prune`

Aperta
#6,918 1 commento 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
3/5
Tempo stimato
1-2 giorni
Idoneità per principianti
55/100
Tipo di issue
Bug
Chiarezza
Abbastanza chiara
Stato di attività
Tranquilla
Stack tecnologico
docker, go
Ambito
cli

Direzione di ricerca

Inizia dal punto di ingresso della Docker CLI per docker volume prune e traccia come vengono valutati i filtri label e label!= ripetuti. Riproduci i comandi nell’issue, poi esamina i test dei filtri correlati, se presenti, e aggiungi una copertura di regressione che mostri il comportamento coerente previsto per entrambe le forme.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

kind/bug status/0-triage
Description

In docker volume prune, label filters are combined with AND, while label! filters are combined with OR. This seems unexpected, and is not mentioned in the documentation, so I assume it to be a bug.

Reproduce
docker volume create --label a=b --label b=c vol1 && docker volume create --label a=b --label b=c --label d=e vol2 && docker volume create --label b=c --label c=d vol3

docker volume  prune --all --filter label=a=b --filter label=y=y
*no deleted volumes*

docker volume  prune --all --filter label!=a=b --filter label!=y=y
Deleted Volumes:
vol1
vol2
vol3
Expected behavior

I would expect the same logical operation to be used in both cases. By reading only remove volumes with (or without, in case label!=... is used) the specified labels, AND makes more sense, so I would not expect vol1 and vol2 being deleted in the label! example, as they do have the a=b label.

docker version
Client:
 Version:           29.3.1
 API version:       1.54
 Go version:        go1.25.8 X:nodwarf5
 Git commit:        1.fc43
 Built:             Wed Mar 25 00:00:00 2026
 OS/Arch:           linux/amd64
 Context:           default

Server:
 Engine:
  Version:          29.3.1
  API version:      1.54 (minimum version 1.40)
  Go version:       go1.25.8 X:nodwarf5
  Git commit:       1.fc43
  Built:            Wed Mar 25 00:00:00 2026
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          2.1.6
  GitCommit:        1.fc43
 runc:
  Version:          1.4.1
  GitCommit:        
 tini-static:
  Version:          0.19.0
  GitCommit:
docker info
Client:
 Version:    29.3.1
 Context:    default
 Debug Mode: false
 Plugins:
  buildx: Docker Buildx (Docker Inc.)
    Version:  0.31.1
    Path:     /usr/libexec/docker/cli-plugins/docker-buildx

Server:
 Containers: 0
  Running: 0
  Paused: 0
  Stopped: 0
 Images: 0
 Server Version: 29.3.1
 Storage Driver: overlayfs
  driver-type: io.containerd.snapshotter.v1
 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
 CDI spec directories:
  /etc/cdi
  /var/run/cdi
 Swarm: inactive
 Runtimes: io.containerd.runc.v2 runc
 Default Runtime: runc
 Init Binary: /usr/bin/tini-static
 containerd version: 1.fc43
 runc version: 
 init version: 
 Security Options:
  seccomp
   Profile: builtin
  selinux
  cgroupns
 Kernel Version: 6.19.10-200.fc43.x86_64
 Operating System: Fedora Linux 43 (Workstation Edition)
 OSType: linux
 Architecture: x86_64
 CPUs: 14
 Total Memory: 30.76GiB
 Name: sbrauner-thinkpadt14gen6.tpb.csb
 ID: bfa28d86-9769-4985-99a5-75ec2afd61fd
 Docker Root Dir: /var/lib/docker
 Debug Mode: false
 Experimental: false
 Insecure Registries:
  ::1/128
  127.0.0.0/8
 Live Restore Enabled: false
 Firewall Backend: iptables+firewalld
Additional Info

No response

Lingua principale
Go
Stelle
6.1k
Fork
2.2k
Merge medio
1g 15h
PR unite (30g)
43

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di docker/cli

Tutte le issue di docker/cli

Issue simili

Altre issue su Go

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.