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


165

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]

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

助けてください


これは時々私に起こりますが、それが起こる原因のパターンを理解することはできません(それが常に私に起こるとは限らないため)。さらに、画像を強制的に削除すると、他の多くの要素も削除されます。エラーの原因がわかりますか?再現できますか?
チャーリーパーカー

優れた最近の要約ドッカー画像、コンテナ、およびボリュームを削除する方法をフィルターとして、パターンなどで、メリッサアンダーソン2017年12月から
Webel ITオーストラリア- upvoter

回答:


124

DockerイメージとDockerコンテナーには違いがあります。このSOの質問を確認してください。

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

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 -a
docker image ls
docker container rm <container_id>
docker image rm <image_id>

また、すべてを削除したい場合は、次のコマンドを使用できます。

docker system prune -a

警告!これは削除されます:

  • すべての停止したコンテナ
  • 少なくとも1つのコンテナで使用されていないすべてのネットワーク
  • 未使用のすべての画像
  • すべてのビルドキャッシュ

2
結局docker rmi -f id、削除を「強制」するために使用する必要がありました。
WernerCD

@WernerCD -fは、複数のリポジトリで参照されている画像を削除する場合に役立ちます。これは、画像の削除に失敗するもう1つの一般的な理由です。
Ahmad Abdelghany 2017

1
docker container ls実行中のコンテナのみをリストすることに注意してください。-aフラグを追加するとそれらすべてがリストされていることに気づくまで、これは私を混乱させました。
MFB

@MFB良い点。2つのコマンドセット間のパリティを維持するために、コマンドにフラグを追加しました。ありがとう!
Ahmad Abdelghany

OSX Dockerデスクトップv2.2.0.4(エンジン19.03.8)でも動作します
rrrrrraul

83

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

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

6
古いコンテナがたくさんある場合はrm `docker ps -aq`、一度に1つずつ削除するのではなく、Docker をクリーンアップすることも検討してください。詳細はこちら
Philiiiiiipp

画像を削除する前に名前を削除する必要があるのはなぜですか?最初に名前を削除せずに画像を削除しようとすると、どうして問題になるのですか?
code_dredd 2018

@code_dredd「名前を削除する」というようなことはありません。画像を削除する前に最初に削除する必要があるのはコンテナです。詳細については、stackoverflow.com
a / 40283776/1998422

37

Dockerイメージとコンテナーをクリーンアップする場合

注意:これによりすべてがフラッシュされます

すべてのコンテナを停止

docker stop $(docker ps -a -q)

すべてのコンテナを削除

docker rm $(docker ps -a -q)

すべての画像を削除

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

うまくいきました。また、コンテナーを停止しても、リストには表示されます。したがって、で削除する必要がありdocker rm $(docker ps -a -q)ます。ありがとう!

28

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

sudo docker rmi -f training/webapp

sudo docker stop training/webapp削除する前にを使用しているコンテナを停止できます


1
コンテナーを停止して試してみました$ sudo docker stop training / webappデーモンからのエラー応答:no
such

コンテナIDで停止してみることができます sudo docker stop 0bd2b54678c7
Saril Sudhakaran 2015

23

複数のDockerコンテナーを起動している場合は、これを使用します

$ docker rm $(docker ps -aq)

「ps -aq」コマンドにリストされている現在のすべてのドッカーを削除します。

ソース:https ://github.com/docker/docker/issues/12487のaaam


これでうまくいきました。このコマンドを実行docker image lsした後docker image rm X、次に実行し、各Xをls出力から取得しました。
jftuga

5

これは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>


2

ドッカー画像を削除>

すべてのコンテナをリストする

docker container ls

すべての画像を一覧表示

docker image ls

コンテナーIDでコンテナーを停止する

docker container stop <container_id>

コンテナーIDでコンテナーを削除する

docker container rm <container_id>

停止して削除したくない場合は、強制的に削除できます

docker container rm -f <container_id>

画像を削除

docker image rm <image_id>

できた!


1

すべてのドッカー画像を一覧表示します。

docker images

存在するすべてのDockerコンテナを一覧表示します。

docker ps -a

削除するイメージを使用しているターゲットコンテナーをすべて削除します。

docker rm <container-id>

対象の画像を削除します。

docker rmi <image-name:image-tag or image-id>

0

特定のイメージに関連付けられているコンテナーのみを削除する

docker ps -a | grep training/webapp | cut -d ' ' -f 1 | xargs docker rm
  • ps -a:すべてのコンテナを一覧表示します
  • grepトレーニング/ウェブアプリ:トレーニング/ウェブアプリイメージから開始されたコンテナ以外のすべてを除外
  • cut -d '' -f 1:コンテナーIDのみをリストします(スペースで区切られている場合は最初のフィールド)
  • xargs docker rm:コンテナーを削除するためにコンテナーIDリストの出力をdocker rmコマンドに送信します
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.