web-dev-qa-db-fra.com

L'erreur Docker ne peut pas supprimer le conteneur Docker, conflit: impossible de supprimer la référence au référentiel

Je veux supprimer le conteneur sur Docker, mais une erreur se produit lorsque vous souhaitez supprimer

Ma prochaine étape avant de supprimer le conteneur, voir la liste des conteneurs existants

sts@Yudi:~/docker$ Sudo docker ps -as

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                    PORTS               NAMES                  SIZE
78479ffeba5c        ubuntu              "/bin/bash"         42 hours ago        Exited (0) 42 hours ago                       sharp_wescoff          81 B (virtual 187.7 MB)
0bd2b54678c7        training/webapp     "python app.py"     5 days ago          Exited (0) 5 days ago                         backstabbing_ritchie   0 B (virtual 323.7 MB)
0adbc74a3803        training/webapp     "python app.py"     5 days ago          Exited (143) 5 days ago                       drunk_feynman          0 B (virtual 323.7 MB)

je veux supprimer la liste, à savoir "training/webapp" mais une erreur s'est produite

sts@Yudi:~/docker$ Sudo docker rmi training/webapp
Error response from daemon: conflict: unable to remove repository reference "training/webapp" (must force) - container 0bd2b54678c7 is using its referenced image 54bb4e8718e8
Error: failed to remove images: [training/webapp]

Si le conteneur est en cours d'exécution dans les images?

S'il vous plaît aider

128
Yuday

Tout d'abord, supprimez les noms de conteneur

$ Sudo docker rm backstabbing_ritchie

Le résultat

$ Sudo docker rm backstabbing_ritchie
  backstabbing_ritchie

supprimer la deuxième partie, qui est répertoriée sur le conteneur à supprimer

$ Sudo docker rm drunk_feynman 
  drunk_feynman

Deuxièmement, retirez le conteneur

$ Sudo docker rmi training/webapp

Le résultat

$ Sudo docker rmi training/webapp  
  Untagged: training/webapp:latest
  Deleted: 54bb4e8718e8600d78a5d7c62208c2f13c8caf0e4fe73d2bc0e474e93659c0b5
  Deleted: f74dd040041eb4c032d3025fe38ea85de8075992bdce6789b694a44b20feb8de
  Deleted: 7cbae69141977b99c44dc6957b032ad50c1379124d62b7d7d05ab7329b42348e
  Deleted: abb991a4ed5e4cde2d9964aec4cccbe0015ba9cc9838b696e7a32e1ddf4a49bd
  Deleted: 1952e3bf3d7e8e6a9b1e23bd4142e3c42ff7f4b7925122189704323593fd54ac
  Deleted: f95ebd363bf27a7546deced7a41a4099334e37a3d2901fa3817e62bb1ade183f
  Deleted: 20dd0c75901396d41a7b64d551ff04952084cc3947e66c67bae35759c80da338
  Deleted: 2505b734adda3720799dde5004302f5edb3f2a2ff71438f6488b530b728ba666
  Deleted: 2ee0b8f351f753f78f1178000ae37616eb5bf241d4ef041b612d58e1fd2aefdc
  Deleted: 2ce633e3e9c9bd9e8fe7ade5984d7656ec3fc3994f05a97d5490190ef95bce8d
  Deleted: 98b15185dba7f85308eb0e21196956bba653cf142b36dc08059b3468a01bf35d
  Deleted: 515565c29c940355ec886c992231c6019a6cffa17ff1d2abdfc844867c9080c5
  Deleted: 2880a3395eded9b748c94d27767e1e202f8d7cb06f1e40e18d1b1c77687aef77

Vérifier le continer

  $ Sudo docker ps -as
  CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                    PORTS               NAMES                  SIZE
  78479ffeba5c        ubuntu              "/bin/bash"         43 hours ago        Exited (0) 43 hours ago                       sharp_wescoff          81 B (virtual 187.7 MB)
76
Yuday

Il y a une différence entre les images de docker et les conteneurs de docker. Vérifiez ceci SO Question .

En bref, un conteneur est une instance en cours d'exécution d'une image. C'est pourquoi vous ne pouvez pas supprimer une image s'il existe un conteneur en cours d'exécution à partir de cette image. Il vous suffit de supprimer d'abord le conteneur.

Docker ps -a               # Lists containers (and tells you which images they are spun from)
Docker images              # Lists images  
Docker rm <container_id>   # Removes a container

Docker rmi <image_id>      # Removes an image 
                           # Will fail if there is a running instance of that image i.e. container

Docker rmi -f <image_id>   # Forces removal of image even if it is referenced in multiple repositories, 
                           # i.e. same image id given multiple names/tags 
                           # Will still fail if there is a docker container referencing image

Mise à jour pour Docker 1.13+ [depuis janvier 2017]

Dans Docker 1.13, nous avons regroupé chaque commande pour la placer sous l’objet logique avec lequel elle interagit.

En gros, les commandes ci-dessus pourraient également être réécrites, plus clairement, comme suit:

docker container ls
docker image ls
docker container rm <container_id>
docker image rm <image_id>
73
Ahmad Abdelghany

vous pouvez utiliser l’option -f pour forcer la suppression des conteneurs.

Sudo docker rmi -f training/webapp

Vous pouvez arrêter les conteneurs en utilisant Sudo docker stop training/webapp avant de supprimer

26
Saril Sudhakaran

Si vous souhaitez nettoyer les images et les conteneurs du menu fixe

ATTENTION: cela va tout vider

arrêter tous les conteneurs

docker stop $(docker ps -a -q)

enlever tous les conteneurs

docker rm $(docker ps -a -q)

supprimer toutes les images

docker rmi -f $(docker images -a -q)
24
q81

Si vous avez lancé plusieurs conteneurs de menu fixe, utilisez cette option.

$ docker rm $(docker ps -aq)

Il supprimera tous les dockers actuels répertoriés dans la commande "ps -aq".

Source: aaam sur https://github.com/docker/docker/issues/12487

22
gael

Vous remarquerez qu'il s'agit d'une question vieille de deux ans, mais je souhaite tout de même partager ma solution de contournement pour cette question particulière:

Tout d’abord, exécutez docker container ls -a pour répertorier tous les conteneurs que vous possédez et identifier le souhait que vous souhaitez supprimer.

Deuxièmement, supprimez celui avec la commande docker container rm <CONTAINER ID> (si le conteneur est en cours d’exécution, vous devez l’arrêter d’abord, exécutez docker container stop <CONTAINER ID> pour arrêter en douceur le conteneur spécifié, s’il ne l’arrête pas quelle que soit la raison, vous pouvez également exécuter docker container kill <CONTAINER ID> to force shutdown of the specified container).

Troisièmement, supprimez le conteneur en exécutant docker container rm <CONTAINER ID>.

Enfin, vous pouvez exécuter docker image ls -a pour afficher toutes les images et supprimer celle de votre choix en exécutant docker image rm <hash>.

5
User3301