2016-11-22 15 views

Antwort

7

Sie können dies versuchen, das wird

  • Filter aus dem unerwünschten Artikel (grep -v) und dann
  • gibt die erste Spalte, die den Behälter ID

Run enthält dieser Befehl :

docker rm $(docker ps -a | grep -v "my_docker" | awk '{print $1}') 

Verwenden anstelle von awk, versuchen Sie dies:

docker rm $(docker ps -a | grep -v "my_docker" | cut -d ' ' -f1) 

Beispiele für awk/cut Nutzung hier: bash: shortest way to get n-th column of output

2

Dies ist, was docker rm $(List of container Ids) tatsächlich passiert. Es ist also nur eine Frage, wie Sie die Liste der Container-IDs filtern können.

Zum Beispiel: Wenn Sie alle Container außer einer mit einer bestimmten Container-ID löschen möchten, dann wird docker rm $(docker ps -a -q | grep -v "my_container_id") den Trick machen.

+1

Dies wird nicht funktionieren, da 'docker ps -a -q' den Namen des Containers nicht ausgibt, was bedeutet, dass Sie ihn nicht mit' grep -v' ausfiltern können. – nwinkler

1

Ich würde es vorziehen, den Containernamen mit etwas entlang der Linien von (nicht getestet) testen

docker inspect --format '{{ .Name }}' $(docker ps -aq)

dies die Namen der (läuft oder nicht) Behälter geben, und Sie können filtern und

docker rm

diese Informationen

1

der Titel des questio mit n fragt nach Bilder, nicht Container. diejenigen, über diese Frage gesucht Stolpern zu alle Bilder entfernen, außer einem, können Sie Docker Prune zusammen mit Filter Fahnen verwenden:

docker image prune -a --force --filter "label!=image_name" 

image_name mit dem Namen Ihres Bildes zu ersetzen.

Sie können auch die "bis =" - Flagge verwenden, um Ihre Bilder nach Datum zu schneiden.

0

Alte Frage, aber ich mag Posts wiederbeleben.

Für einen solchen Fall, dass Sie Docker GC Spotify nutzen könnten: https://github.com/spotify/docker-gc#excluding-containers-from-garbage-collection

Sie tun können:

echo "my_docker" >> /tmp/docker-gc-exclude-containers 
echo '*' > /tmp/docker-gc-exclude 
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock -v /etc:/etc:ro -v /tmp/docker-gc-exclude-containers:/etc/docker-gc-exclude-containers:ro -v /tmp/docker-gc-exclude:/etc/docker-gc-exclude:ro spotify/docker-gc 

(wenn Sie möchten, dass Ihre Bilder auch gereinigt werden, können Sie die docker-gc-exclude Datei vermeiden Montage)

Verwandte Themen