Supprimer une image par son identifiant en utilisant la force
Dans cette étape, nous allons apprendre à supprimer une image Docker en utilisant son identifiant d'image (Image ID), et plus précisément, à utiliser l'option de force (-f
ou --force
) lorsque cela est nécessaire. Supprimer une image par son identifiant est utile lorsque vous voulez être précis sur laquelle vous supprimez, notamment si plusieurs étiquettes (tags) pointent vers la même image.
Tout d'abord, téléchargeons une image que nous pourrons ensuite supprimer par son identifiant. Nous utiliserons l'image ubuntu
. Si vous l'avez déjà, le téléchargement sera rapide.
docker pull ubuntu
Maintenant, listons les images pour obtenir l'identifiant d'image de l'image ubuntu
.
docker images
Recherchez l'image ubuntu
dans la sortie et notez son IMAGE ID
. Ce sera une longue chaîne de caractères hexadécimaux. Vous n'avez besoin que des premiers caractères (généralement 3 ou plus) pour identifier de manière unique l'image.
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest 270000000000 2 weeks ago 77.8MB
Essayons de supprimer l'image en utilisant son identifiant sans l'option de force d'abord. Remplacez YOUR_IMAGE_ID
par l'identifiant d'image réel que vous avez noté à partir de la sortie de docker images
.
docker rmi YOUR_IMAGE_ID
Si l'image n'est pas utilisée par aucun conteneur en cours d'exécution ou arrêté, cette commande devrait réussir et supprimer l'image. Cependant, s'il existe un conteneur basé sur cette image, vous recevrez un message d'erreur indiquant que l'image est utilisée par un conteneur et ne peut pas être supprimée.
Pour démontrer l'utilisation de l'option de force, lançons d'abord un conteneur basé sur l'image ubuntu
.
docker run -d ubuntu sleep 3600
Cette commande lance un conteneur Ubuntu en mode détaché (-d
) et le maintient en exécution pendant une heure (sleep 3600
).
Maintenant, essayons de supprimer l'image ubuntu
par son identifiant à nouveau sans l'option de force.
docker rmi YOUR_IMAGE_ID
Vous devriez recevoir un message d'erreur similaire à celui-ci :
Error response from daemon: conflict: unable to remove repository reference "ubuntu:latest" (must force) - image is referenced by one or more containers: 000000000000 (created ...)
Cette erreur se produit car un conteneur utilise l'image. Pour supprimer une image qui est utilisée par un conteneur, vous devez utiliser l'option de force (-f
).
Maintenant, supprimons l'image en utilisant son identifiant avec l'option de force. Remplacez YOUR_IMAGE_ID
par l'identifiant d'image réel.
docker rmi -f YOUR_IMAGE_ID
L'option de force indique à Docker de supprimer l'image même si elle est utilisée par un conteneur. Docker arrêtera et supprimera d'abord tous les conteneurs qui utilisent l'image, puis supprimera l'image elle-même. La sortie montrera que l'image et ses couches ont été supprimées.
Untagged: ubuntu:latest
Deleted: sha256:2700000000000000000000000000000000000000000000000000000000000000
Deleted: sha256:0000000000000000000000000000000000000000000000000000000000000000
... (plus de lignes Deleted)
Listons les images à nouveau pour confirmer que l'image ubuntu
a disparu.
docker images
L'image ubuntu
ne devrait plus figurer dans la liste.
L'utilisation de l'option de force doit être faite avec prudence, car elle arrête et supprime les conteneurs sans confirmation supplémentaire.