1. ホーム

[解決済み】docker/overlay2/のクリーニングは安全か?

2022-04-28 04:55:18

質問

AWS EC2上でいくつかのDockerコンテナを動作させていますが、/var/lib/docker/overlay2フォルダのディスクサイズが非常に大きくなっています。

その内容を削除しても大丈夫なのでしょうか? あるいは、dockerにディスク使用量を解放するためのコマンドがあるかどうか。


UPDATEです。

実際にやってみた docker system prune -a すでに0Kbを再生しています。

また、私の /docker/overlay2 のディスクサイズは docker system df

dockerのドキュメントとBMitchの回答を読んで、このフォルダを触るのは愚かな考えだと思い、ディスクスペースを取り戻すために他の方法を試してみようと思っています。

解決方法は?

Dockerは/var/lib/dockerを使用して、イメージ、コンテナ、およびローカルの名前付きボリュームを保存します。これを削除するとデータが失われ、場合によってはエンジンが動かなくなる可能性があります。overlay2サブディレクトリには、特に様々な ファイルシステム層 イメージとコンテナのためのものです。

未使用のコンテナやイメージをクリーンアップするには docker 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
      --filter filter   Provide filter values (e.g. 'label=<key>=<value>')
  -f, --force           Do not prompt for confirmation
      --volumes         Prune volumes

プルーンが絶対に削除しないものは含まれています。

  • 実行中のコンテナ docker ps )
  • は、これらのコンテナに関するログを記録します。 この記事 ログのサイズ制限の詳細はこちら)
  • これらのコンテナによって行われたファイルシステムの変更( docker diff )

さらに、通常の docker フォルダの外側に作成されたものは、このガベージコレクション中に docker から見えなくなる可能性があります。これは、他のアプリがこのディレクトリに書き込んだり、Docker エンジンの以前の設定 (例えば、AUFS から overlay2 に切り替えたり、ユーザー名前空間を有効にした後など) が原因である可能性があります。

このアドバイスを無視して、このファイルシステムからoverlay2のような単一のフォルダを削除したらどうなるのでしょうか?コンテナ ファイルシステムはファイルシステム レイヤーの集合体から構成されており、overlay2 フォルダーは docker がこれらのマウントを実行している場所です (これらのマウントは mount コンテナ実行時)。これらのうち、使用中のものを削除すると、実行中のコンテナからファイルシステムのチャンクが削除され、影響を受けたイメージから新しいコンテナを起動する機能が停止する可能性があります。以下を参照してください。 この質問 は、考えられる結果の1つです。


dockerを完全にクリーンな状態にリフレッシュするには、ディレクトリを丸ごと削除してください。 overlay2 のようなサブディレクトリだけでなく :

# danger, read the entire text around this code before running
# you will lose data
sudo -s
systemctl stop docker
rm -rf /var/lib/docker
systemctl start docker
exit

エンジンは完全に空の状態で再起動するため、すべてを失うことになります。

  • 画像
  • コンテナ
  • 名前付きボリューム
  • ユーザー作成ネットワーク
  • 群れの状態