0
votes

Arrêtez et retirez le conteneur Docker avec la force Ignorer

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é.


2 commentaires

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 avec grep et xargs .


3 Réponses :


2
votes

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


0 commentaires

0
votes

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


1 commentaires

Je crois que votre code fonctionne mais la question est de savoir comment rmer le conteneur alors qu'il n'existe pas auparavant.



0
votes

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


0 commentaires