web-dev-qa-db-ja.com

Dockerエラーはdockerコンテナーを削除できません、競合:リポジトリー参照を削除できません

Dockerでコンテナを削除したいのですが、削除するとエラーが発生します

コンテナを削除する前の私の次のステップ、既存のコンテナのリストを見てください

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)

リストを削除したいもの、すなわち"training/webapp"が発生したエラー

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]

コンテナーがイメージ内で実行されているかどうか

助けてください

118
Yuday

まず、コンテナ名を削除します

$ Sudo docker rm backstabbing_ritchie

結果

$ Sudo docker rm backstabbing_ritchie
  backstabbing_ritchie

削除するコンテナに表示されている2番目の部分を削除します。

$ Sudo docker rm drunk_feynman 
  drunk_feynman

次に、容器を取り出します

$ Sudo docker rmi training/webapp

結果

$ 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

コンティニューをチェックする

  $ 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)
73
Yuday

Dockerイメージとdockerコンテナの間には違いがあります。これをチェックしてください SO Question

つまり、コンテナはイメージの実行中のインスタンスです。そのイメージから実行中のコンテナがある場合、そのイメージを削除できないのはそのためです。 先にコンテナを削除するだけです

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

Docker 1.13+用の更新プログラム[2017年1月以降]

Docker 1.13では、相互作用する論理オブジェクトの下に座るようにすべてのコマンドを再編成しました

基本的に、上記のコマンドは以下のように書き換えることもできます。

Docker container ls
Docker image ls
Docker container rm <container_id>
Docker image rm <image_id>
68

-fオプションを使用すると、コンテナを強制的に削除できます。

Sudo docker rmi -f training/webapp

削除する前にSudo docker stop training/webappを使ってコンテナを停止することができます。

25

複数のdockerコンテナを起動している場合は、これを使用してください。

$ docker rm $(docker ps -aq)

"ps -aq"コマンドにリストされている現在のdockerをすべて削除します。

出典:aaam on https://github.com/docker/docker/issues/12487

22
gael

港湾労働者の画像やコンテナを整理したい場合

注意:これはすべてをフラッシュします

すべてのコンテナを停止

docker stop $(docker ps -a -q)

すべてのコンテナを削除

docker rm $(docker ps -a -q)

すべての画像を削除

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

これは2年前の質問ですが、それでもこの特定の質問に対する私の回避策を共有したいと思います。

まず、docker container ls -aを実行して、所有しているすべてのコンテナを一覧表示し、削除したいコンテナを特定します。

次に、コマンドdocker container rm <CONTAINER ID>でコンテナを削除します(コンテナが現在実行中の場合は最初に停止し、指定されたコンテナを適切に停止するにはdocker container stop <CONTAINER ID>を実行します。 docker container kill <CONTAINER ID> to force shutdown of the specified containerを実行できます。

3番目に、docker container rm <CONTAINER ID>を実行してコンテナーを削除します。

最後にdocker image ls -aを実行してすべての画像を表示し、docker image rm <hash>を実行して必要な画像を削除できます。

5
User3301