886 Stimmen

Wie entfernt man ein Docker-Image?

Ich führe Docker unter Vagrant unter OS X 10.8.4 (Mountain Lion) aus, und immer wenn ich versuche, ein gespeichertes Image zu löschen, erhalte ich einen Fehler:

$ docker rmi some-image-id
2013/07/15 hh:mm:ss unerwartete JSON-Eingabe

Laut der rmi Hilfe ist die richtige Syntax docker rmi BILD [BILD...], und ich weiß nicht genau, was ich davon halten soll.

Wie kann ich ein Image löschen?

$ docker version
Client-Version: 0.4.8
Server-Version: 0.4.8
Go-Version: go1.1

$docker info
Container: 1
Images: 3

Interessanterweise erscheinen beim Ausführen von docker ps überhaupt keine Container. Beim Ausführen von docker images werden vier (4) base Bilder und ein (1) node Bild angezeigt.

4voto

tgogos Punkte 19599

Für Versionen 1.13 und höher:

docker image rm [OPTIONEN] IMAGE [IMAGE...]

Vergleicht man:

scheinen die [OPTIONEN] keinen Unterschied zu haben.

--force , -f        Erzwingt das Löschen des Images
--no-prune          Löscht keine ungetaggten Eltern

Von: Vorstellung von Docker 1.13

Neu strukturierte CLI

In Docker 1.13 haben wir jeden Befehl gruppiert, um unter dem logischen Objekt zu sein, mit dem es interagiert. Zum Beispiel sind list und start von Containern jetzt Unterbefehle von docker container und history ist ein Unterbefehl von docker image.

Diese Änderungen ermöglichen es uns, die Docker CLI-Syntax zu bereinigen, den Hilfetext zu verbessern und Docker einfacher zu verwenden. Die alte Befehlssyntax wird weiterhin unterstützt, aber wir ermutigen alle, die neue Syntax zu übernehmen.

4voto

Mr Singh Punkte 3527

Docker bietet einige Befehle zum Entfernen von Images.

Anzeigen/Entfernen von Images:

docker images
docker images -a # Alle Images
docker images --no-trunc # Liste aller vollständigen Image-IDs

docker images --filter "dangling=true" // Zeige nicht verwendete Images
docker rmi $(docker images -f "dangling=true" -q) # Entferne nicht verwendete Images

docker rmi  or  # Entferne ein einzelnes Image

docker image prune # Interaktiv nicht verwendete Images entfernen
docker image prune -a # Entferne alle Images

oder 

docker rmi -f $(sudo docker images -a -q)

Zusätzlich können Sie auch filter-Parameter verwenden, um eine Reihe von Images auf einmal zu entfernen:

Beispiel:

$docker images --filter "before=" // Alle Images vor hello-world anzeigen

$docker images --filter "since=" // Alle Images seit hello-world anzeigen

Sie können also filter-Images auf diese Weise löschen:

docker rmi $(docker images --filter "since=")
docker rmi $(docker images --filter "before=")

2voto

chandank Punkte 875

Alle von ihnen löschen mit

Schritt 1: Alle Container beenden

für i in `sudo docker ps -a | awk '{ print $1 }'`; do sudo docker kill $i ; done

Schritt 2: Entfernen Sie sie zuerst

für i in `sudo docker ps -a | awk '{ print $1 }'`; do sudo docker rm $i ; done

Schritt 3: Löschen Sie die Images mit Force

für i in `sudo docker images | awk '{ print $3}'`; do  sudo docker rmi --force $i ; done

Verwenden Sie Schritt 1, falls Sie einen Fehler erhalten, der besagt, dass er aufgrund von Untergeordneten Abhängigkeiten nicht gelöscht werden kann.

1voto

Innocent Anigbo Punkte 3726

Wenn Sie Container bereinigen möchten, die automatisch/periodisch beendet werden, und Bilder und Volumes entfernen möchten, die von einem laufenden Container nicht verwendet werden, können Sie das Bild meltwater/docker-cleanup herunterladen.

Ich verwende dies in der Produktion, da wir mehrmals am Tag auf mehreren Servern bereitstellen und ich nicht zu jedem Server gehen möchte, um aufzuräumen (das wäre mühsam).

Führen Sie einfach aus:

docker run -d -v /var/run/docker.sock:/var/run/docker.sock:rw  -v /var/lib/docker:/var/lib/docker:rw --restart=unless-stopped meltwater/docker-cleanup:latest

Es wird alle 30 Minuten ausgeführt (oder wie lange auch immer Sie dies mithilfe der Option DELAY_TIME=1800 festlegen) und bereinigt beendete Container und Bilder.

Weitere Details: https://github.com/meltwater/docker-cleanup/blob/master/README.md

1voto

Alex M Punkte 497

Hier ist ein Shell-Skript, um ein markiertes (benanntes) Bild und dessen Container zu entfernen. Speichern Sie es als docker-rmi und führen es mit 'docker-rmi mein-bild-name' aus

#!/bin/bash

IMAGE=$1

if [ "$IMAGE" == "" ] ; then
  echo "Fehlendes Bildargument"
  exit 2
fi

docker ps -qa -f "ancestor=$IMAGE" | xargs docker rm
docker rmi $IMAGE

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X