docker image pruneの docker ドキュメンテーションでは、-aフラグを使用して
ぶら下がっている画像だけでなく、すべての未使用の画像を削除します
以降
ぶら下がり画像をすべて削除します。-aを指定すると、どのコンテナーからも参照されていないすべてのイメージも削除されます。
誰かがダングリングイメージとは何か、ダングリングイメージと未使用のイメージの違いは何ですか?
prune
本番では推奨されない/
docker image pruneの docker ドキュメンテーションでは、-aフラグを使用して
ぶら下がっている画像だけでなく、すべての未使用の画像を削除します
以降
ぶら下がり画像をすべて削除します。-aを指定すると、どのコンテナーからも参照されていないすべてのイメージも削除されます。
誰かがダングリングイメージとは何か、ダングリングイメージと未使用のイメージの違いは何ですか?
prune
本番では推奨されない/
回答:
未使用のイメージは、コンテナで割り当てられていないか、使用されていないことを意味します。たとえば、実行中docker ps -a
-終了したコンテナと現在実行中のコンテナがすべて一覧表示されます。コンテナ内で使用されている画像はすべて「使用済み画像」です。
一方、ダングリングイメージとは、イメージの新しいビルドを作成したが、新しい名前が付けられなかったことを意味します。つまり、あなたが持っている古い画像は「ぶら下がり画像」になります。これらの古いイメージは、タグ付けされておらず、<none>
実行時に名前に「」が表示されるイメージですdocker images
。
を実行docker system prune -a
すると、未使用の画像とぶら下がっている画像の両方が削除されます。したがって、コンテナで使用されているイメージは、終了したか現在実行されているかに関係なく、影響を受けません。
docker system prune --all --filter "until=24h"
最近の画像も保持
docker system prune -a
停止したコンテナも削除されます。したがって、終了したコンテナにのみ関連付けられている画像も削除する必要がありますよね?
docker images --quiet --filter=dangling=true | xargs --no-run-if-empty docker rmi
Dockerイメージは複数のレイヤーで構成されています。ぶら下がり画像は、タグ付けされた画像とは関係のないレイヤーです。それらはもはや目的を果たしておらず、ディスク領域を消費します。
注:以前のリリースにロールバックできないコンテナによって参照されていないすべてのイメージが削除される
prune
ため、本番環境では使用しないことをお勧めしますdocker system prune -a
。
にの-f
値を指定dangling=true
してフィルターフラグを追加することにより、ダングリングイメージを一覧表示しdocker images
ます。
docker images -f dangling=true
docker rmi $(docker images -f dangling=true -q)
または
docker images --quiet --filter=dangling=true | xargs --no-run-if-empty docker rmi
cronジョブを実行してぶら下がりを削除する場合は、上記を使用してジョブが正常に実行されることを確認します。Jenkinsのように、belowowカンマ付きのジョブでフリースタイルのジョブを実行すると、マシンにぶら下がっているものがなくても失敗することはありません。
これは、ぶら下がっている画像をクリーンアップして、使用のためにディスク領域を取り戻すための最も安全で簡単な方法です。
docker images
はぶら下がります。サイズの確認方法は?また、名前とタグが含まれdocker images -a
ていない画像は中間画像です。削除できますか、サイズを確認するにはどうすればよいですか?
docker内の画像は、画像IDと呼ばれることが多いsha256ダイジェストによって参照されます。そのダイジェストは、イメージがDockerホストに存在するために必要なすべてです。通常、これらのダイジェストを指すタグがあります。たとえば、私のシステムでは、busybox:latest current points to image id c30178c523 ...などのタグがあります。複数のタグが同じイメージを指すことができます。たとえば、busybox:latestの新しいコピーをプルしたり、アプリケーションイメージの新しいバージョンをビルドしたりする場合など、タグは別のIDを指すように変更できます。
ぶら下がり画像とは、タグがなく、子画像(たとえば、の異なるバージョンを使用した古い画像)がない画像のことFROM busybox:latest
です。彼らは以前彼らを指し示しているタグを持っていたかもしれません、そしてそのタグは後で変更されました。または、タグがなかった可能性があります(たとえばdocker build
、タグオプションを含まないの出力)。これらは、古いイメージIDを参照するコンテナーがまだ実行されていない限り、通常は削除しても安全です。それらを保持する主な理由は、ビルドのキャッシュのためです。
さらに、コンテナー(停止したコンテナーを含む)で現在使用されていないイメージをダウンロードした可能性があります。これらはぶら下がっている画像とは完全に異なり、将来使用する予定がない場合、または必要なときに別のコピーをダウンロードすることを気にしない限り、削除しても安全です。
docker images -a
)は、ぶら下がり画像とも呼ばれますか?Dockerイメージプルーンでクリアされますか?
ぶら下がり画像はタグなしの画像です。次のコマンドは、ダングリングイメージのリストを提供します。
docker images --filter "dangling=true"
docker image prune
ぶら下がっている画像をすべて削除します。
未使用の画像は、タグが付いているが現在コンテナーとして使用されていない画像です。将来必要になるかもしれません。
docker image prune -a
未使用のイメージだけでなく、未処理のイメージもすべて削除します。
一般的に、使用されていないすべての画像は、しばらくの間は削除したくありません。したがって、フィルターを使用して削除することをお勧めします。
docker image prune -f --filter "until=6h"
docker image prune -a -f --filter "until=6h"
ぶら下がっている画像も削除しますか?
docker image prune -f --filter "until=6h"
--aがないので、なぜそれが未使用の画像を削除するのですか?
ここでandyneffの厚意により、ぶら下がっている画像を削除するための便利なコマンド(エイリアス)を見つけました:https : //forums.docker.com/t/how-to-delete-cache/5753 :
alias docker_clean_images='docker rmi $(docker images -a --filter=dangling=true -q)'
alias docker_clean_ps='docker rm $(docker ps --filter=status=exited --filter=status=created -q)'
最初のものは、すべてのぶら下がっている画像をクリーンアップします。これは、複数のビルドから残っている中間イメージを削除するのに役立ちます。2つ目は、停止したコンテナを削除するためのものです。これらは私が定期的なメンテナンスに使用するエイリアスです
すべてのキャッシュを削除する場合は、コンテナーが使用しているイメージを削除できないため、まずすべてのコンテナーが停止して削除されていることを確認する必要があります。だから似たようなもの
docker kill $(docker ps -q) docker_clean_ps docker rmi $(docker images
-a -q)
これにより、キャッシュ内のすべての画像が削除されて削除されます。
画像のスクリーンショットでは、「なし」の名前はダングリング画像です。ぶら下がっているイメージは、イメージの新しいビルドを作成したが、新しい名前が付けられなかったことを意味します。つまり、あなたが持っている古い画像は「ぶら下がり画像」になります。これらの古いイメージは、タグ付けされておらず、Dockerイメージを実行したときに名前に「」が表示されるイメージです。
docker system prune -a
、未使用の画像とぶら下がっている画像の両方を削除します。したがって、コンテナで使用されているイメージは、終了されているか現在実行されているかに関係なく、影響を受けません。