Dockerデータを完全にクリーンアップする方法

Dockerデータを完全にクリーンアップする方法

Docker はシステムの設定を変更しませんが、大量のディスク領域を占有します。しばらくすると (Docker を使用して)、次のコマンドを入力すると、恐ろしい使用状況統計が返されるはずです。

docker システム df

幸いなことに、Docker を使用すると、未使用のイメージ、コンテナー、ボリュームからディスク領域を再利用することができます。

定期的に剪定する

停止したコンテナ、未使用のネットワーク、および未処理のイメージを安全に削除するには、次のコマンドを定期的に実行することをお勧めします。

docker システム プルーン

よりリスクの高いオプションは次のとおりです。

docker システム プルーン -a

これにより、実行中のコンテナに関連付けられていないイメージも消去されます。これは少し極端かもしれませんが、Docker は必要なイメージを再度ダウンロードします。最初のダウンロードは少し遅くなりますが、画像は将来の使用のためにキャッシュされます。

次のセクションでは、特定のアイテムを削除する他の方法について説明します。

ミラーエビクション

Docker イメージは、アプリケーション (Web サービス、言語ランタイム、データ管理システムなど) のディスク スナップショットです。次のように入力すると、実行中のイメージとダングリング イメージ (コンテナーに関連付けられていないイメージ) の両方を含むすべてのイメージを表示できます。

dockerイメージls -a

次のように入力すると、Docker イメージを削除できます。

docker イメージ rm <名前またはID>

このコマンドには任意の数の画像を追加できます。各画像はスペース文字で区切ってください。

コンテナのクリーンアップ

Docker コンテナはイメージの実行インスタンスであり、同じコンテナから任意の数のコンテナを起動できます。コンテナはステートレスであり、イメージのファイルシステムを参照するため、通常は小さくなります。次のように入力して、実行中および停止中のすべてのコンテナを表示します。

dockerコンテナls -a

コンテナを停止したら、削除できます。コンテナを停止するコマンドは次のとおりです。

docker コンテナ停止 <名前またはID>

コンテナを削除するコマンドは次のとおりです。

docker コンテナ rm <名前またはID>

繰り返しになりますが、このコマンドには、スペースで区切られた任意の数のコンテナ名または ID を追加できます。

停止したコンテナを保管しておく必要はほとんどありません。 docker run コマンドに --rm オプションを追加すると、コンテナの終了後に自動的に削除できます。

ネットワークソート

コンテナは Docker によって管理されるネットワークに接続して相互に通信できるようになります。これらは、ディスク領域をあまり占有しない構成ファイルです。次のように入力して、すべての Docker ネットワークを表示します。

docker ネットワーク ls

未使用のネットワークを 1 つ以上削除するには、次のコマンドを入力します。

docker network rm <名前またはID>

繰り返しになりますが、このコマンドには、スペースで区切って任意の数のネットワーク名または ID を追加できます。

体積の蒸発

Docker ボリュームは仮想ディスク イメージです。 再起動間でファイルやその他の状態情報を保存できるように、実行中のコンテナに接続する必要があります。 ボリュームのサイズはそれを使用するアプリケーションによって異なりますが、一般的なデータベースでは、ほとんどの場合空であっても数百メガバイトのスペースが必要になります。

次のコマンドを使用して、Docker によって管理されているすべてのディスク ボリュームを表示できます。

docker ボリューム ls

Docker ボリュームを削除すると、そのデータは永久に消去されます。もう後戻りはできません!

データベース駆動型アプリケーションを開発している場合、多くの場合、特定のレコード セットを再作成するために使用できる 1 つ以上のデータ ダンプを保持できます。ほとんどのデータベース クライアント ツールには、Adminer のエクスポート リンクなどのダンプ機能が用意されています。

ほとんどのデータベース システムでは、MySQL の mysqldump ユーティリティなどのバックアップ機能が提供されます。 docker exec コマンドを使用して、実行中のコンテナに対してこれらの操作を実行できます。

次の Linux / macOS コマンドは、mysql という名前のコンテナ上で実行されている mydb という名前の MySQL データベースを backup.sql という名前のファイルにバックアップします。 パスワード mysecret を持つ MySQL ルート ユーザーを使用する:

docker exec mysql /usr/bin/mysqldump -u root -pmysecret mydb \ > backup.sql

Windows PowerShell と同等のもの:

docker exec mysql /usr/bin/mysqldump -u root -pmysecret -r mydb | \ Set-Content backup.sql

docker cp コマンドを使用して、実行中のコンテナにデータ ファイルをコピーしたり、実行中のコンテナからデータ ファイルをコピーしたりすることもできます。 これはソース パスとターゲット パスを介して渡され、コンテナーは名前/ID の後にコロンとそのパスが続く形式で識別されます。例:

docker cp mycontainer:/some/file ./host/directory

データが安全であると仮定すると、次のように入力して未使用のボリュームを削除できます。

docker ボリューム rm <名前>

未使用の Docker ボリューム (現在実行中のコンテナに接続されていないボリューム) はすべて、次のコマンドを使用して削除できます。

docker ボリュームのプルーニング

あるいは、docker volume prune -a を実行するとすべてのボリュームが削除されます。 結局のところ、すでにバックアップはありますよね?

完全にクリーンなスタート

未使用のコンテナ、イメージ、ボリューム、ネットワークをすべて 1 つのコマンドでクリーンアップできます。

docker システム プルーン -a --volumes

確認プロンプトなしでクリーンアップを強制する場合は、-f を追加できます。 システムは Docker データなしで元の状態に復元されます。

Docker データを完全にクリーンアップする方法についての記事はこれで終わりです。Docker データのクリーンアップに関するより関連性の高いコンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Docker ディスク領域クリーニングのソリューション
  • Docker クリーニングの一般的な方法と問題点
  • Docker クリーンアップ環境操作
  • Docker が占有するディスク領域をクリーンアップする方法
  • Docker プライベート サーバー イメージを定期的にクリーンアップする方法
  • Docker によって生成されたジャンクファイルをクリーンアップする方法
  • Dockerリソースを素早くクリーンアップする方法
  • Docker クリーンアップ コマンド コレクション

<<:  Vueフィルターの詳細な説明

>>:  MySQLの浅いエントリと深いエグジットの原則についての簡単な説明

推薦する

コードをセマンティックにする HTML のヒント

HTML のセマンティクスはありふれた問題のようです。Google で検索すると、セマンティクスに関...

チェックボックスの不確定プロパティの使用の紹介

Windows XP でフォルダーのプロパティ ダイアログ ボックスを使用すると、フォルダーの属性カ...

MySQL で日付時刻データを取得し、その後に .0 を追加する方法

MySQL のデータ型は datetime です。データベースに保存されているデータは 2015-0...

mysql バッチで大量のデータを削除する

mysql バッチで大量のデータを削除する1000万件のレコードを持つテーブル(syslogs)があ...

シンプルな商品スクリーニング機能を実現するjs

この記事の例では、商品スクリーニング機能を実装するためのjsの具体的なコードを参考までに共有していま...

Linux/Docker で System.Drawing.Common を使用する

序文プロジェクトを .net core に移行した後、 System.Drawing.Commonコ...

v-html レンダリング コンポーネントの問題

以前 HTML を解析したことがあるので、今日は Vue ドラッグ アンド ドロップを使用して、Ku...

OracleデータをMySQLデータベースに抽出する実装プロセス

Oracle データベースから MySQL データベースへの移行では、Oracle データベース モ...

統計量に対するmySql SQLクエリ操作

余計なことは言わないで、コードだけ見てみましょう〜 プロジェクト番号を選択、 sum(case wh...

ディレクトリスクロール効果を実現するネイティブJS

これはネイティブ JS で実装されたテキスト スクロール効果です。この効果は通常、ニュース、ダイナミ...

Vue3 の父子値転送に関する簡単な説明

目次父から息子へ: 1. 親コンポーネントのサブコンポーネントタグに、サブコンポーネントに渡されるデ...

任意の長さの配列を作成または埋めるための JS のヒントの要約

目次序文直接充填方式for ループの push() メソッド配列コンストラクタメソッド配列コンストラ...

Ubuntuのバックアップ方法(4種類)のまとめ

方法1:リスピンを使用するには、次の手順に従ってください。 sudo add-apt-reposit...

Tencent Cloud で HTTPS を無料で導入する方法

最近、WeChatアプレットを書いていたとき、WeChatアプレットではすべてのリクエストインターフ...

MySql への新しいユーザーの追加、ユーザー用のデータベースの作成、ユーザーへの権限の割り当ての概要

1. 新しいユーザーを追加するローカルIPアクセスのみを許可する '123456' ...