[解決済み] 古くて使われていないDockerイメージを削除する方法
質問
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時間以上前に終了したコンテナは削除されます。
- それ以降に残ったコンテナに属さない画像は削除されます。
関連
-
[解決済み] Dockerコンテナの中から、マシンのローカルホストに接続するにはどうすればよいですか?
-
[解決済み] ホストからDockerコンテナにファイルをコピーする方法は?
-
[解決済み] リポジトリを使用せずに、あるホストから別のホストにDockerイメージをコピーする方法
-
[解決済み] ホストからDockerコンテナのIPアドレスを取得する方法
-
[解決済み] Dockerコンテナのシェルに入るにはどうしたらいいですか?
-
[解決済み] 古いDockerコンテナを削除する方法
-
[解決済み] Dockerイメージはホストマシン上のどこに保存されていますか?
-
[解決済み] Dockerイメージの削除方法について教えてください。
-
[解決済み】Dockerは仮想マシンとどう違うの?
-
[解決済み】Dockerイメージとコンテナの違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】D-Bus接続の取得に失敗しました。操作が許可されていません
-
[解決済み] DockerでPillowを使用する
-
docker make image apt-get install file error debconf: unable to initialize frontend: ダイアログ
-
docker-composeの使い方ガイド
-
docker コマンドで例外 permissions denied が発生しました。
-
ドッカーコンテナの状態がExitと表示される(1)
-
[解決済み] Docker:ローカルのDockerイメージをすべて削除する方法
-
[解決済み】Docker remove <none> TAGイメージ
-
[解決済み】dangling imageとunused imageとは何ですか?
-
[解決済み] Docker Machineです。デバイスに空き容量がない