Dockerのイメージを削除するにはどうすればよいですか?


265

次の画像を用意しました。

alex@alexvps:~$ sudo docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
<none>              <none>              70c0e19168cf        5 days ago          1.069 GB
<none>              <none>              c2ce80b62174        8 days ago          399.2 MB
<none>              <none>              60afe4036d97        8 days ago          325.1 MB

そして、それらの1つを削除しようとすると、次のようになります。

alex@alexvps:~$ sudo docker rmi 60afe4036d97
Error: Conflict, 60afe4036d97 wasn't deleted
2014/01/28 00:54:00 Error: failed to remove one or more images

どうすれば削除できますか?なぜそのような矛盾があるのですか?

回答:


478

すべての画像を削除するには、次のコマンドを使用します

docker rmi $(docker images -q)

すべてのコンテナを削除するには、指定されたコマンドを使用します

docker rm $(docker ps -a -q)

警告:これにより、すべてのイメージとコンテナが破壊されます。それらを復元することはできません!

このソリューションはTechoverflow.netによって提供されます


17
シンプルでストレート。また、以下のコマンドで画像を強制的に削除します。'docker rmi -f $(
docker

37
対応するWindows PowerShellはdocker images -q | %{docker rmi -f $_}
BeatingToADifferentRobot '28

1
まず、@ muheed How to Answerstackoverflow.com/a/30475249/2747020)のコマンドを使用して、一部の画像の削除を解除しました:sudo docker ps -a -q | xargs -n 1 -I {} sudo docker rm {}
Razec Luar

1
Dockerコンテナー用のWindows Powershelldocker ps -a -q | %{docker rm -f $_}
Dexter

1
以下の@ alexyz78の注記にあるように、今すぐ使用できますdocker system prune。だから、everyhingワイプする:docker kill $(docker ps -q)ストップコンテナに続くdocker system prune -aすべてを削除します-参照stackoverflow.com/a/44309011/247708
バーラト

101

考えられる理由: 理由としては、このイメージが現在実行中のコンテナーによって使用されていることが考えられます。そのような場合、実行中のコンテナーを一覧表示し、関連するコンテナーを停止してから、イメージを削除できます。

docker ps
docker stop <containerid>
docker rm <containerid>
docker rmi <imageid>

docker psでコンテナーが見つからない場合は、これを使用して、既に終了しているすべてのコンテナーをリストして削除できます。

docker ps -a | grep 60afe4036d97
docker rm <containerid>

注: コンテナーを使用する場合は、終了したコンテナーをすべて一度に削除しないように注意してくださいVolume-Only。これらはExit状態は変わりませんが、有用なデータ含まれています


実際には、それを指定するメッセージが表示されます。たぶん別の画像がこれに基づいていますか?最初に、このイメージから作成したイメージをすべて削除してみてください。
qkrijger 2014年

12
私は、画像を削除することができたsudo docker ps -a | grep Exit | awk '{print $1}' | sudo xargs docker rm(おかげgithub.com/dotcloud/docker/issues/3258)、その後でsudo docker rmi 70c0e19168cf
alexyz78

2
Exit状態の画像を削除するときは注意してください。データボリュームのみのコンテナーを使用している場合、コンテナーは稼働し続けません。
aceofspades 2014

1
awkはgrepすることができます:awk '/Exit/ {print $1}'
ドワイト・スペンサー

あなたのコマンドはこれを投げますError response from daemon: No such container: ...。何を置き換える必要があるのか​​、何を置き換える必要があるのか​​を判断するのは困難です。使用しないでください...
Felo Vilches、2017

60

エラーの理由は、イメージにタグがなかったとしても、そのイメージ上に作成されたコンテナーがまだ存在しており、exited状態である可能性があるためです。したがって、これらのイメージで作成されたすべてのコンテナーを停止して削除したことを確認する必要があります。次のコマンドは、実行されていないすべてのコンテナを削除するのに役立ちます。

docker rm `docker ps -aq --no-trunc --filter "status=exited"`

これで、すべてのぶら下がっている非中間<none>イメージが削除されます。

docker rmi `docker images --filter 'dangling=true' -q --no-trunc`

注:実行中のすべてのコンテナを停止するには:

docker stop `docker ps -q`

1
これをありがとう、これは最もクリーンな実装であることがわかりました。
Joseph Sawyer

7
「status = exited」があるため、データボリュームコンテナーがある場合は注意してください。つまり、すべてのデータが失われます。
Johan

19

イメージは現在実行中のコンテナーで使用されている可能性があるため、最初にコンテナーを停止して削除する必要があります。

docker stop <container-name>
docker rm <container-id>

次に、画像を削除してみます。

docker rmi <image-id>

この画像が他の画像に依存していないことを確認する必要があります(そうでない場合は、最初にそれらを削除する必要があります)。

まだ有効なコンテナーがなく(docker ps -a何も返さない)奇妙なケースがありましたが、イメージとそのイメージ依存関係を削除することができませんでした。

これらの特殊なケースを解決するには、これを使用してイメージを強制的に削除できます。

docker rmi -f <image-id>

19

バッシュで:

for i in `sudo docker images|grep \<none\>|awk '{print $3}'`;do sudo docker rmi $i;done

これにより、「<none>」という名前のすべての画像が削除されます。これらの画像は冗長であることがわかりました。


3
これは質問の答えにはなりませんが、それでも非常に便利です。ありがとう。
binwiederhier 2014年

5
このコマンドを単純docker images|grep \<none\>|awk '{print $3}' | xargs docker rmiにします。sudo許可が必要になる場合があります
Larry Cai

15

私はこのコマンドで答えを見つけました:

docker images --no-trunc | grep none | awk '{print $3}' | xargs docker rmi

使用中の画像をいくつか削除したところ問題があり、気づかなかった(を使用docker ps -a)。


9

Docker ver。以降 1.13.0(2017年1月)system pruneコマンドがあります。

$ docker system prune --help

Usage:  docker system prune [OPTIONS]

Remove unused data

Options:
-a, --all     Remove all unused images not just dangling ones
-f, --force   Do not prompt for confirmation
    --help    Print usage

7

サニーの答えに加えて:

PowerShellウィンドウでWindowsマシン(Docker for Windows)上のすべてのイメージ削除するには、次のようにします。

docker images -q | %{docker rmi -f $_}

PowerShellウィンドウでWindowsマシン(Docker for Windows)上のすべてのコンテナー削除するには、次のようにします。

docker ps -a -q | %{docker rm -f $_}

6

まず、次のコマンドを使用してすべてのコンテナを削除します

sudo docker ps -a -q | xargs -n 1 -I {} sudo docker rm {}

次に、次のコマンドを使用して、IDでイメージを削除します

sudo docker rmi <image-id>

これにより、実行中のすべてのDockerコンテナーが削除されることが明らかでない場合は、注目に値します。
Michael Mior


4

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

docker ps -q -a | xargs docker rm

すべてのDockerイメージを強制的に削除します

docker rmi -f $(docker images -f dangling=true -q)

4

--forceコマンドの最後に追加するだけです。お気に入り:

sudo docker rmi <docker_image_id> --force

よりインテリジェントにするために、次のように追加できます。

sudo docker stop $(docker ps | grep <your_container_name> | awk '{print $1}')

sudo docker rm $(docker ps | grep <your_container_name> | awk '{print $1}')

sudo docker rmi $(docker images | grep <your_image_name> | awk '{print $3}') --force

ここのdocker ps$ 1は最初の列、つまりDockerコンテナーIDです。

そしてdocker images$ 3は3番目の列、つまりDockerイメージIDです。


3

タグなしの画像をすべて削除するコマンドの最もコンパクトなバージョンは次のとおりです。

docker rmi $(docker images | grep "^<none>" | awk '{print $"3"}')

3

一部のDockerイメージを削除するには、次のコマンドを実行する必要があります。

$ docker rmi <docker_image_id>

したがって、すべてのDockerイメージを削除するには、次のコマンドを実行します。

$ docker rmi $(docker images -q)

ここで、すべてのDockerイメージ(使用中のイメージを含む)を削除する場合は、次のようにフラグを追加できます-f

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

3

使用する

docker image prune -all

または

docker image prune -a

ぶら下がり画像をすべて削除します。-aが指定されている場合、どのコンテナからも参照されていないすべての画像も削除されます。

注:プルーンが何かを削除する前に確認を求められますが、削除される可能性のあるもののリストは表示されません。また、docker image lsはネガティブフィルタリングをサポートしていないため、実際に削除される画像を予測することは困難です。

Dockerのpruneのドキュメントに記載されています。


1

終了したコンテナを自動的または定期的にクリーンアップし、実行中のコンテナで使用されていないイメージとボリュームを削除する場合は、Dockerイメージをダウンロードできますmeltwater/docker-cleanup

そうすれば、手作業でクリーンアップする必要はありません。

とにかく走れ:

docker run -d -v /var/run/docker.sock:/var/run/docker.sock:rw  -v /var/lib/docker:/var/lib/docker:rw --restart=unless-stopped meltwater/docker-cleanup:latest

30分ごとに(またはDELAY_TIME = 1800オプションを使用して設定した場合は)実行され、終了したコンテナとイメージをクリーンアップします。

詳細:https : //github.com/meltwater/docker-cleanup/blob/master/README.md


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.