ホームページ  >  記事  >  運用・保守  >  docker でファイルが削除されたのに、ディスクがまだ 100% のままなのはなぜですか?

docker でファイルが削除されたのに、ディスクがまだ 100% のままなのはなぜですか?

PHPz
PHPzオリジナル
2023-04-18 10:25:252824ブラウズ

Docker を使用する過程で、多くの人は、Docker イメージまたはコンテナーを削除した後、占有されているディスク容量が減らず、100% のままであるという問題に遭遇するかもしれません。どうしてこれなの?詳しく見てみましょう。

1. Docker の基本的な使い方

問題の原因を理解する前に、Docker の基本的な使い方を簡単に確認してみましょう。

docker コンテナを実行します:

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

ここで、IMAGE は実行するイメージの名前です。 docker イメージを渡すことができます コマンド ビュー;

OPTIONS には次のものを含めることができます:

-d はバックグラウンドで実行するコンテナーを指定します;

-p はコンテナーのポートを指定しますマッピングの形式は次のとおりです: ホスト ポート: コンテナ ポート;

--name はコンテナ名を指定します;

-v はホスト ディレクトリとコンテナ ディレクトリのマウント ポイントを指定します;

rm はコンテナを自動的に削除します。

Docker コンテナーの削除:

docker rm CONTAINER [CONTAINER...]

ここで、CONTAINER は、Docker を通じて表示できるコンテナーの名前または ID を指します。 ps -a コマンド。

Docker イメージの削除:

docker rmi IMAGE [IMAGE...]

IMAGE は、Docker イメージを通じて表示できるイメージの名前または ID を指します。指示。

2. 問題分析

上記のコマンドを使用して Docker コンテナーまたはイメージを削除する場合、通常は 2 つの状況が発生します:

  1. コンテナーを削除します。 use docker rm CONTAINER コマンドがコンテナを削除すると、各コンテナが独自の独立したファイル システムを持つことができるため、Docker はコンテナによって使用されているファイル システムを自動的に削除します。したがって、コンテナーが削除されると、コンテナーが占有していたスペースも解放されます。
  2. イメージの削除: docker rmi IMAGE コマンドを使用してイメージを削除すると、Docker はイメージのすべての履歴バージョンと中間層を削除しますが、まだ使用しているコンテナーに必要なすべてのコンテンツは保持します。画像。したがって、イメージが複数のコンテナーで使用されている場合、イメージを削除しても、イメージが占めていたすべてのスペースは解放されません。

上記の状況に基づいて、次の結論を導き出すことができます。Docker コンテナーまたはイメージを削除しても、ディスク領域がすぐに解放されることは保証されず、特定のツールを使用して手動でクリーニングする必要があります。

3. 解決策

Docker は実行時に実際にホストのファイル システムを使用するため、Docker コンテナまたはイメージが削除された場合は、ホスト上に残っているファイルを手動でクリーンアップする必要があります. ジャンクファイルを削除することによってのみ、ディスクスペースを解放できます。

次は、具体的なクリーニング方法です。

  1. コンテナによって生成されたジャンク ファイルをクリーンアップします。

Docker コンテナでは、いくつかの一時ファイルやログ ファイルが保持される可能性があるため、コンテナを削除するときは、スペースを占有しすぎないように、これらのファイルも一緒に削除する必要があります。

次のコマンドでクリーンアップできます:

docker ps -aq | xargs docker rm -v

このコマンドの機能は次のとおりです: すべてのコンテナーの ID を検索し、 put them ID を docker rm コマンドに渡して、docker が対応するコンテナーと関連するすべてのボリュームを自動的に削除できるようにします。

  1. 未使用のイメージをクリーンアップする

コンテナを実行すると、Docker は公式リポジトリまたは他のカスタム リポジトリから必要なイメージをダウンロードし、ローカルのバックアップに保存します。これらのバックアップは使用するスペースが少なくなりますが、未使用のイメージが多数ある場合はディスク スペースが不足する可能性もあります。

未使用のイメージは次のコマンドで確認できます:

docker image -q | xargs docker Inspection --format='{{.Id}} {{.RepoTags}} {{.サイズ}}' | sort -k 3 -h

このコマンドの機能は、すべての画像の ID、タグ、サイズをリストし、サイズ順に並べ替えることです。

次のコマンドを使用して、アイドル状態のイメージをすべて削除できます:

docker image -qf dangling=true | xargs docker rmi

このコマンドの機能は次のとおりです: すべて検索未使用のイメージはミラーリングして削除します。

  1. Docker データ ディレクトリをクリーンアップする

最後に、上記の 2 つの方法が効果がない場合は、Docker データ ディレクトリを手動でクリーンアップできます。デフォルトでは、Docker データ ディレクトリは /var/lib/docker/ にあります。

次のコマンドを使用してディレクトリをクリーンアップできます:

docker system prune -a -f

このコマンドの機能は次のとおりです: 未使用を含むすべての未使用オブジェクトを削除します。画像、未使用のデータ、未使用のビルド キャッシュ。

4. 概要

Docker を使用するプロセスでは、ディスク領域を解放するために、コンテナー、イメージ、および Docker データ ディレクトリに残っているいくつかのジャンク ファイルを手動でクリーンアップする必要があります。 。これらのファイルは大量のディスク領域を占有するだけでなく、システム リソースも占有し、システムのパフォーマンスに影響を与えます。したがって、Docker ジャンク ファイルを定期的にクリーンアップすることが非常に必要です。

以上がdocker でファイルが削除されたのに、ディスクがまだ 100% のままなのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。