web-dev-qa-db-fra.com

Docker Prune bloqué dans "une opération Prune est déjà en cours d'exécution"

J'ai lancé la commande docker system Prune hier, cela a pris du temps, puis ma session SSH a été déconnectée pour une raison différente.

Malheureusement, j'obtiens maintenant:

Error response from daemon: a Prune operation is already running.

De toute évidence, il y a un verrou et la commande d'élagage n'est plus en cours d'exécution. 

Est-ce que quelqu'un sait comment enlever le verrou sans arrêter et enlever tous les conteneurs?

EDIT: problème créé dans le référentiel: https://github.com/moby/moby/issues/36447

10
Martin Mika

Le docker de redémarrage a fonctionné pour moi.

1
Bhavani

Ce problème semble se produire lorsqu'un conteneur ne répond pas au menu fixe.

Voici comment je l'ai corrigé:

  1. Tout d’abord, recherchez les conteneurs non répondants avec: Sudo docker inspect %CONTAINER ID%
  2. Si un conteneur ne répond pas, la commande inspect ne renverra rien. 
  3. Si le %CONTAINER ID% ne répondant pas a été identifié, trouvez son pid correspondant avec: ps -aux | grep %CONTAINER ID%
  4. Il devrait y avoir une ligne ressemblant à:

root 14931 0.0 0.0 7648 428 ? Sl Sep13 0:26 docker-containerd-shim -namespace moby -workdir /var/lib/docker/containerd/daemon/io.containerd.runtime.v1.linux/moby/3b0d4cba3f63a71fda99c76f3f777a156056e559fb034da4ed59c0aa340e5669 -address /var/run/docker/containerd/docker-containerd.sock -containerd-binary /usr/bin/docker-containerd -runtime-root /var/run/docker/runtime-runc

  1. Ensuite, tuez ce service avec kill -9 %PID%

Astuce 1: Il peut y avoir un ou plusieurs conteneurs ne répondant pas

Conseil n ° 2: pour éviter les temps morts, vous pouvez augmenter le service correspondant au conteneur qui ne répond pas avec un docker service scale ....

(Ma réponse complète celle de Dparkar.)

1
KDemeul

Solution de travail de la question github: 

doublemcz a commenté le 14 mars

Je peux confirmer que Prune est bloqué à cause d'un conteneur qui ne répond pas. Quand je tue le conteneur en premier par kill -9 PROCESS_ID où le processus Id je reçois de ps aux | grep docker-containerd-shim -namespace moby -workdir /var/lib/docker/containerd/daemon/io.containerd.runtime.v1.linux/moby/CONTAINER_ID

Le problème est que vous devez savoir qu’un conteneur ne répond pas sur le menu fixe: -/Le conteneur fonctionne (c’est-à-dire que node.js fonctionne bien), mais docker n’est pas en mesure de le contrôler.

Btw ce conteneur ne devrait même pas être là parce que nous exécutons la mise à jour du service docker ... avec la dernière image:. Docker a créé un autre conteneur et cela n'a pas été tué. Donc, il y avait deux conteneurs en cours d'exécution avec deux versions différentes.

0
dparkar