停止したコンテナで画像が使用されています


99

このコマンドでDockerコンテナを削除しようとしています:

docker rmi <Image-Id>

明らかに、Image-Idを使用するIDに置き換えました。

docker images

しかし、以下のエラーが表示されます。

Error response from daemon: conflict: unable to delete <Image-ID> (must be forced) - image is being used by stopped container xxxxxxxxxxx

回答:


127

--force , -f画像の強制削除を使用することもできます

-fフラグを使用して、画像の短いIDまたは長いIDを指定した場合、このコマンドは、指定されたIDに一致するすべての画像のタグを解除して削除します。

  docker rmi -f <image_id> 

1
おかげで、それはうまくいきましたが、問題があります。10 GBのイメージを削除しましたが、削除した後、空きディスク容量に変化が見られません。
Mehrdad Babaki 2018

1
画像付きのボリュームを削除し、それぞれの画像サイズを確認しましたか
Adiii 2018

1
実は、私はdockerを初めて使用します。ツールを試してみますが、コマンドラインを使用してボリュームを検出して削除することはできますか?
Mehrdad Babaki 2018

1
はいdockervolume ls; ボリュームを一覧表示して削除するには、docker volume rm v_id
Adiii 2018

42

停止したコンテナをdocker rmで削除する必要があります。その後、で使用するイメージを削除できますdocker rmi


3
これは完全な答えの一部です。強制的に削除するか、停止した画像を削除することができます。
bmacnaughton

31

また、ロックの原因となっているコンテナを停止している場合もあります。最初に以下を使用してこれらを削除します。

docker rm  $(docker ps -q -a)

ここでは、IDだけでDockerプロセスを一覧表示し、それらを削除しています。ただし、dockerrmは停止したコンテナーのみを削除します。

次に戻って、以下を使用して画像を削除します。

docker image rm <image_id>

23

最初にコンテナを削除する必要があります。
強制は最後に取る方法です。

#check container
docker ps -a

#remove container
docker rm containerID

3
明らかに最良の答えです。停止したコンテナのリストを取得する方法を説明する唯一の人。
マルコ

4

docker rmi <image-id>うまくいかなかった場合は、これを試してください:

実行中のすべてのコンテナーを停止します

docker stop $(docker ps -aq)

すべてのコンテナを削除します

docker rm $(docker ps -aq)

すべての画像を削除する

docker rmi $(docker images -q)

3

他の回答に加えて、Docker for Macを使用しても同じ問題が発生docker ps -aしましたが、実行中のコンテナーは表示されませんでした。ランニングdocker imagesショー:

docker/desktop-storage-provisioner   v1.0                605a0f683b7b        2 months ago        33.1MB
k8s.gcr.io/kube-controller-manager   v1.15.5             1399a72fa1a9        6 months ago        159MB
k8s.gcr.io/kube-proxy                v1.15.5             cbd7f21fec99        6 months ago        82.4MB
k8s.gcr.io/kube-apiserver            v1.15.5             e534b1952a0d        6 months ago        207MB
k8s.gcr.io/kube-scheduler            v1.15.5             fab2dded59dd        6 months ago        81.1MB
docker/kube-compose-controller       v0.4.23             a8c3d87a58e7        11 months ago       35.3MB
docker/kube-compose-api-server       v0.4.23             f3591b2cb223        11 months ago       49.9MB
k8s.gcr.io/coredns                   1.3.1               eb516548c180        16 months ago       40.3MB
k8s.gcr.io/etcd                      3.3.10              2c4adeb21b4f        17 months ago       258MB
k8s.gcr.io/pause                     3.1                 da86e6ba6ca1        2 years ago         742kB

Kubernetesを有効にしている場合、これらのイメージはすべてDockerアプリによって使用されます。Docker for Macの設定には、Kubernetesのセクションがあります。「システムコンテナの表示(詳細)」をクリックすると、に表示されdocker psます。

これらのイメージを削除する場合は、Docker for Macアプリを介してKubernetesを無効にしてから、再試行する必要があります。


2

DockerコンテナはDockerイメージ上で実行されます。イメージを削除できるのは、どのコンテナにもアタッチされていない場合のみです。したがって、コンテナを停止してコンテナを削除する必要があります。その後、イメージIDを削除できます。

docker stopcontainer-idおよびdockerrm container-id

次に、image docker rmiimage-idを削除してみてください

以下のリンクに記載されているいくつかの追加情報。乾杯。!

https://docs.docker.com/config/pruning/


これは、コンテナーの停止(docker-compose stop)->コンテナーの削除(docker rm <コンテナーの名前>)->関連するイメージの削除(docker rmi <image_id>)のプロセスに続く正解です。
KTA

1

目標がディスク領域を再利用することである場合、まだ言及されていない別のアプローチはを使用することdocker system pruneです。注意が必要な警告が出力されます。

WARNING! This will remove:
  - all stopped containers
  - all networks not used by at least one container
  - all dangling images
  - all dangling build cache

これは名前付きイメージを削除しませんが、中間の名前なしイメージを削除します。使用しているコンテナのサイズによっては、これによりかなりのディスク容量を節約できます。


0

を変更し、Dockerfiledocker composeを使用docker-compose している--build場合は、オプションを指定して実行することでイメージを再構築できます。


に変更を加えた場合はDockerfile、自分で画像を削除するのではなく、フラグ--buildを使用してください。docker-compose、それが変化して新しいイメージの再構築して
ans1genie
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.