Comment puis-je supprimer un conteneur Docker avec force ignorer cela signifie que s'il n'y a pas de conteneur Docker en cours d'exécution, il ne doit rien faire et s'il existe un conteneur Docker en cours d'exécution avec le nom, il doit s'arrêter et supprimer ce conteneur.
J'exécute le code suivant pour arrêter et supprimer le conteneur.
Error: No such container: CONTAINER_NAME
S'il existe un conteneur en cours d'exécution, tout fonctionne correctement, cependant, s'il n'y a pas de conteneur, l'erreur suivante est générée:
docker rm -f CONTAINER_NAME || true
Y a-t-il quelque chose comme --force ignore
? J'ai besoin de ce comportement pour l'inclure dans un Makefile automatisé.
3 Réponses :
essayez ce code de sortie sera 1:
docker rm -f CONTAINER_NAME 2> /dev/null || true
ceci avec le code de sortie 0:
docker rm -f CONTAINER_NAME 2> /dev/null
Vous pouvez obtenir une liste de tous les conteneurs actifs et inactifs par cette commande
docker container rm fb62434ef56w
La sortie devrait ressembler à quelque chose comme ça
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES cc3tyhgh3454 mariadb "/bin/bash" 3 months ago Created comtyr_yelf cd20b776ubjr solita/ubuntu-systemd "/bin/bash -c 'exec â¦" 5 months ago Exited (137) 2 months ago systemd fb62434ef56w elastic-search "/bin/bash" 3 months ago Exited (130) 3 months ago mrydfh_tyr
Une fois que vous pouvez voir l'ID du conteneur que vous souhaitez supprimer, appuyez sur la commande suivante avec l'ID que vous souhaitez supprimer. Remarque: si le conteneur est déjà en cours d'exécution, vous devez vous arrêter avant de procéder:
docker container ls -a
Je crois que votre code fonctionne mais la question est de savoir comment rmer le conteneur alors qu'il n'existe pas auparavant.
Les makefiles ont un support intégré pour ignorer les erreurs sur une commande spécifique en ajoutant un tiret avant la commande.
docker rm -f CONTAINER_NAME Error: No such container: CONTAINER_NAME make: [rmDocker] Error 1 (ignored) Container removed!
Vous verrez toujours le message d'erreur, mais le makefile ignorera l'erreur et continuera quand même.
Production:
rmDocker: -docker rm -f CONTAINER_NAME @echo "Container removed!"
Référence: GNU Make Manual
Que diriez-vous de vérifier d'abord si un tel conteneur existe et de le supprimer uniquement s'il existe?
Comment avez-vous obtenu
CONTAINER_NAME
? Lorsque vous avez utilisédocker ps
, vous voudrez peut-être le combiner avecgrep
etxargs
.