1. ホーム
  2. docker

[解決済み] 古くて使われていないDockerイメージを削除する方法

2022-03-17 22:30:02

質問

Dockerを長期間運用していると、システム内に大量のイメージが蓄積されます。未使用のDockerイメージを一度に安全に削除して、ストレージを解放するにはどうしたらよいでしょうか?

さらに、数ヶ月前にプルしたイメージも削除したいのですが、そのイメージには正しい TAG .

ですから、タグ付けされていない画像だけを削除してほしいということではありません。タグ付けされていない画像と、数ヶ月前に正しいタグ付けをした画像を含む、一般的な未使用の画像を削除する方法を探しています。 TAG .

解決方法は?

2016年9月の更新情報です。Docker 1.13に対応しました。 PR 26108 コミット86de7c0 は、docker デーモンのデータがディスク上でどの程度の容量を占めているかを可視化し、不要なデータを簡単に削除できるようにするための新しいコマンドをいくつか導入しています。

docker system prune は、すべてのぶら下がりデータ(つまり、停止したコンテナ、コンテナのないボリューム、コンテナのないイメージの順)を削除します。未使用のデータであっても -a オプションで指定します。

もあるんですね。

について 未使用 を使用します。 docker image prune -a (ダングリング除去用 ununsedイメージ)。
警告: ' 未使用 は、どのコンテナからも参照されていない画像という意味です。 -a .

で説明したように A L 's 答え , docker system prune --all はすべて削除されます。 未使用 の画像は、ぶら下がったものだけではありません...これは少し多すぎるかもしれません。

組み合わせ docker xxx prune と共に --filter オプション は、刈り込みを制限するのに最適な方法です ( docker SDK API 1.28以上なので、docker 17.04+。 )

<ブロッククオート

現在対応しているフィルタは以下の通りです。

  • until (<timestamp>) - 指定されたタイムスタンプ以前に作成されたコンテナ、イメージ、およびネットワークのみを削除します。
  • label ( label=<key> , label=<key>=<value> , label!=<key> または label!=<key>=<value> ) - を持つコンテナ、イメージ、ネットワーク、ボリュームのみを削除します(または なし の場合は label!=... が使用されている場合)、指定されたラベルを表示します。

"を参照してください。 プルーンの画像 "を例に挙げて説明します。

オリジナル回答(2016年9月)

普段はそうしています。

docker rmi $(docker images --filter "dangling=true" -q --no-trunc)

それらを削除するための[エイリアス]があります。 ぶらさがり画像 : drmi ] 13

dangling=true フィルタは未使用の画像を見つける

そうすることで、ラベル付き画像から参照されなくなった中間画像は削除されます。

私も同じようにしています まず に対して 終了したプロセス(コンテナ)

alias drmae='docker rm $(docker ps -qa --no-trunc --filter "status=exited")'

として ハーバードバード 指摘 コメントで :

技術的には コンテナをクリーンアップしてからイメージをクリーンアップした方が、より多くのぶら下がりイメージを捕らえることができ、エラーも少なくなるからです。 .


ジェス・フラゼール(jfrazelle) があります。 bashrc機能 :

dcleanup(){
    docker rm -v $(docker ps --filter status=exited -q 2>/dev/null) 2>/dev/null
    docker rmi $(docker images --filter dangling=true -q 2>/dev/null) 2>/dev/null
}


古い画像を削除するには、"unreferenced-dangling"画像だけでなく、次のような方法があります。 docker-gc :


シンプルなDockerコンテナとイメージのガベージコレクションスクリプトです。

  • 1時間以上前に終了したコンテナは削除されます。
  • それ以降に残ったコンテナに属さない画像は削除されます。