docker pruneコマンドは、あまり使用されないデータを定期的にクリーンアップするために使用できます。

docker pruneコマンドは、あまり使用されないデータを定期的にクリーンアップするために使用できます。

シナリオ: Docker エンジンを長期間使用すると、ディスク領域がどんどん大きくなっていることに気付くでしょう。ここで、ディスク領域を解放するために、Docker に関連する未使用のデータを削除する必要があります。

docker systemコマンドを初めて見る

Docker システムには、現在次の 4 つのサブコマンドがあります。

docker システム df
docker システムイベント
docker システム情報
docker システム プルーン

docker システムの最も重要なコマンドの 1 つは、イメージ データや停止したコンテナーなどの未使用のデータをクリーンアップする docker system prune コマンドです。

Dockerシステムのヘルプを参照

[root@localhost ~]# docker システム --help

使用方法: docker system コマンド

Dockerを管理する

オプション:
      --help 使用方法を表示する

コマンド:
  df Docker ディスク使用量を表示
  イベント サーバーからリアルタイムイベントを取得する
  info システム全体の情報を表示する
  未使用データを削除する

コマンドの詳細については、「docker system COMMAND --help」を実行してください。

docker システム df

イメージ、コンテナ、(ローカル) ボリュームを含む、Docker ディスクの全体的な使用状況の概要を提供します。これで、Docker が使用しているリソースの量をいつでも確認できるようになりました。

[root@localhost ~]# docker システム df
タイプ 合計 アクティブサイズ 再利用可能
画像 10 6 2.652GB 1.953GB (73%)
コンテナ 6 6 6.922MB 0B (0%)
ローカルボリューム 0 0 0B 0B

docker システム プルーン

前のコマンドで docker が多くのスペースを占有していることが示された場合は、クリーンアップを開始します。すべてを実行するコマンドがあります:

[root@localhost ~]# docker システムプルーニング
警告! これにより以下が削除されます:
        - 停止したすべてのコンテナ # 停止したコンテナをクリーンアップします - 少なくとも 1 つのコンテナで使用されていないすべてのネットワーク # 未使用のネットワークをクリーンアップします - 未処理のすべてのイメージ # 放棄されたイメージをクリーンアップします - すべてのビルド キャッシュ # ビルド キャッシュをクリーンアップします 続行しますか? [y/N] y
回収されたスペースの合計: 0B

警告メッセージによると、このコマンドは閉じられたコンテナとぶら下がっているイメージをすべて削除します。この例では、3 つの 1 GB のランダム ファイルを含むイメージの名前が occupationed: になっています。これはぶら下がっているイメージであり、削除されます。同時に、すべての中間画像が削除されます。

さらに一歩進んで、-a オプションを使用してより徹底的なクリーンアップを実行します。この時点で、より深刻な警告情報が表示されます:

$ docker システムプルーン -a
警告! これにより以下が削除されます:
        - 停止したコンテナすべて
        - 少なくとも 1 つのコンテナで使用されていないすべてのボリューム
        - 少なくとも 1 つのコンテナで使用されていないすべてのネットワーク
        - 少なくとも 1 つのコンテナが関連付けられていないすべてのイメージ
本当に続行しますか? [y/N] y
削除された画像:
タグなし: テスト:最新
削除済み: sha256:c515ebfa2...
削除済み: sha256:07302c011...
削除済み: sha256:37c0c6474...
削除済み: sha256:5cc2b6bc4...
削除済み: sha256:b283b9c35...
削除済み: sha256:8a8b9bd8b...
タグなし: アルパイン:最新
タグなし: alpine@sha256:58e1a1bb75db1...
削除済み: sha256:4a415e366...
削除済み: sha256:23b9c7b43...
回収された合計容量: 2.151GB

このコマンドはシステム全体をクリーンアップし、実際に使用されているイメージ、コンテナ、ボリューム、ネットワークのみを保持するため、細心の注意が必要です。たとえば、バックアップイメージ(バックアップ、ロールバックなど)が必要になることがあるため、本番環境では prune -a コマンドを実行できません。これらのイメージが削除された場合、コンテナを実行するときに再度ダウンロードする必要があります。

この時点で、コンテナにバインドされていないすべてのイメージが削除されます。最初の prune コマンドはすべてのコンテナを削除するため、すべてのイメージ (どのコンテナにもバインドされていないもの) が削除されます。

Noneオブジェクトをクリーンアップする方法

Docker は、イメージ、コンテナ、ボリューム、ネットワークなどの未使用のオブジェクト (多くの場合、「ガベージ コレクション」と呼ばれます) をクリーンアップするために保守的なアプローチを採用しています。
通常、これらのオブジェクトは、Docker に明示的に削除するように要求しない限り、削除されません。これにより、Docker が追加のディスク領域を使用する可能性があります。
Docker は、オブジェクトの種類ごとに prune コマンドを提供します。
あるいは、docker system prune を使用して、複数の種類のオブジェクトを一度にクリーンアップすることもできます。このトピックでは、これらのプルーニング コマンドの使用方法について説明します。

トリムミラー

なし画像(ぶら下がっている画像)をクリーンアップする
コマンド: docker image prune
デフォルトでは、docker image prune コマンドはバニティ イメージ (タグ付けされておらず、他のイメージから参照されていないイメージ) のみをクリーンアップします。

root@instance-o70no2nw:~# docker イメージのプルーニング
警告! これにより、ぶら下がっている画像がすべて削除されます。
本当に続行しますか? [y/N] y
回収されたスペースの合計: 0B

コンテナで使用されていないイメージをクリーンアップする

コマンド: docker image prune -a

デフォルトでは、続行するように求められます。プロンプトをバイパスするには、-f または --force フラグを使用します。
--filter フラグを使用すると、フィルター式を使用して削除するイメージを制限できます。たとえば、24 時間前に作成された画像のみを検討するには、次のようにします。

$ docker イメージ prune -a --filter "until=24h"

剪定容器

コンテナの起動時に --rm フラグが指定されていない限り、コンテナを停止してもコンテナは自動的に削除されません。停止したコンテナも含め、Docker ホスト上のすべてのコンテナを表示するには、docker ps -a コマンドを使用します。特に開発環境では、コンテナの数の多さに驚かれるかもしれません。停止されたコンテナの書き込み可能なレイヤーは、依然としてディスク領域を占有します。これらをクリーンアップするには、docker コンテナ prune コマンドを使用します。

$ dockerコンテナのプルーン

警告! これにより、停止されたコンテナがすべて削除されます。
本当に続行しますか? [y/N] y

デフォルトでは、続行するように求められます。プロンプトをバイパスするには、-f または --force フラグを使用します。

デフォルトでは、停止されたコンテナはすべて削除されます。 --filter フラグを使用してスコープを制限できます。たとえば、次のコマンドは、24 時間以上前に作成された停止されたコンテナのみを削除します。

トリミングロール

ボリュームは 1 つ以上のコンテナで使用でき、Docker ホスト上のスペースを占有します。ボリュームは自動的に削除されることはありません。削除するとデータが破壊されるためです。

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

警告! これにより、少なくとも 1 つのコンテナーで使用されていないすべてのボリュームが削除されます。
本当に続行しますか? [y/N] y

ネットワークの剪定

Docker ネットワークは多くのディスク領域を占有しませんが、iptables ルール、ブリッジ ネットワーク デバイス、およびルーティング テーブル エントリを作成します。これらをクリーンアップするには、docker network prune を使用して、コンテナで使用されていないネットワークをクリーンアップできます。

$ docker ネットワークプルーニング

すべてをトリミング

docker system prune コマンドは、イメージ、コンテナ、ネットワークをプルーニングする簡単な方法です。 Docker 17.06.0 以前では、ボリュームのプルーニングは問題ありません。 Docker 17.06.1 以降では、ボリュームをプルーニングするには、docker system prune コマンドに --volumes フラグを明示的に指定する必要があります。

$ docker システムプルーン

警告! これにより以下が削除されます:
        - 停止したコンテナすべて
        - 少なくとも 1 つのコンテナで使用されていないすべてのネットワーク
        - すべてのぶら下がった画像
        -すべてのビルドキャッシュ
本当に続行しますか? [y/N] y

Docker 17.06.1 以降を使用しており、ボリュームの整理も行う場合は、--volumes フラグを使用します。

$ docker system prune --volumes

警告! これにより以下が削除されます:
        - 停止したコンテナすべて
        - 少なくとも 1 つのコンテナで使用されていないすべてのネットワーク
        - 少なくとも 1 つのコンテナで使用されていないすべてのボリューム
        - すべてのぶら下がった画像
        -すべてのビルドキャッシュ
本当に続行しますか? [y/N] y

通常、スケジュールされたタスクは削除できます

たとえば、私のシナリオでは、イメージが大量のディスク領域を占有するため、毎日午前 1 時にイメージを削除するタスクをスケジュールし、72 時間以上使用されていないすべてのイメージを削除します。

[root@develop-server]# crontab -e
0 1 * * * docker イメージ prune -a --force --filter "until=72h"

docker システム情報(docker info)

このコマンドの略語は皆さんご存知だと思いますが、docker info

[root@localhost ~]# docker システム情報
コンテナ: 6
 ランニング: 6
 一時停止: 0
 停止: 0
画像: 49
サーバーバージョン: 17.06.2-ce
ストレージ ドライバー: オーバーレイ
 バックアップファイルシステム: xfs
 d_type をサポート: true
ログドライバー: json-file
cgroup ドライバー: cgroupfs
プラグイン: 
 ボリューム: ローカル
 ネットワーク: ブリッジ ホスト macvlan null オーバーレイ
 ログ: awslogs fluentd gcplogs gelf journald json-file logentries splunk syslog
群れ: 非アクティブ
ランタイム: runc
デフォルトのランタイム: runc
初期化バイナリ: docker-init
コンテナバージョン: 6e23458c129b551d5c9871e5174f6b1b7f6d1170
runc バージョン: 810190ceaa507aa2727d7ae6f4790c76ec150bd2
初期化バージョン: 949e6fa
セキュリティ オプション:
 seccomp
  プロフィール: デフォルト
カーネルバージョン: 3.10.0-514.26.2.el7.x86_64
オペレーティング システム: CentOS Linux 7 (コア)
OSタイプ: Linux
アーキテクチャ: x86_64
CPU: 24
合計メモリ: 31.21 GiB
名前: localhost.localdomain
ID: YTL2:6RWX:IZK6:X4XC:XKMO:WVXD:LXPR:E5GN:GEJB:WIUX:L5YH:PDFB
Docker ルートディレクトリ: /var/lib/docker
デバッグモード(クライアント): false
デバッグモード(サーバー): false
レジストリ: https://index.docker.io/v1/
実験的: 偽
安全でないレジストリ:
 127.0.0.0/8
レジストリミラー:
 http://9zkjjecg.mirror.aliyuncs.com/
 https://docker.mirrors.ustc.edu.cn/
ライブリストアが有効: false

詳しい説明

参照:

docker-system - 新しいコマンドセット

Docker は none イメージをクリーンアップします Prune コマンド

docker prune コマンドを使用して、あまり使用されないデータをクリーンアップする方法についての記事はこれで終わりです。docker prune コマンドを使用して、あまり使用されないデータをクリーンアップする方法の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Docker プライベート サーバー イメージを定期的にクリーンアップする方法

<<:  MySQL インデックス プッシュダウン (ICP) の簡単な理解と例

>>:  単純なCSSの詳細に惚れ込むと、重要ではないものの、効率性が向上する可能性がある

推薦する

jsはaudioContextを通じて3Dサウンド効果を実現します

この記事では、audioContextを介して3Dサウンド効果を実現するためのjsの具体的なコードを...

Vueプロジェクトでページジャンプを実装する方法

目次1. vue-cli デフォルト プロジェクトを作成する (babel のみを含む) 2. 作成...

JavaScript エラー処理 try..catch...finally + は throw+TypeError+RangeError をカバーします

目次1. 目的2. 文法3. 練習する1. 目的通常、エラーが発生すると、スクリプトは直ちに停止し、...

HTMLポップアップdivはモバイルの中央揃えを実現するのに非常に便利です

コードをコピーコードは次のとおりです。 <!DOCTYPE html PUBLIC "...

CentOS8 ネットワークカード設定ファイル

1. はじめにCentOS8 システムの更新、新しいバージョンは人々に非常に快適に感じさせます。 こ...

zabbix 4.04 の詳細なインストール チュートリアル (CentOS 7.6 ベース)

1. インストール前の準備: 1.1 JDKをインストールするopenjdkをアンインストールする...

MySQL データベースの最適化: インデックスの実装原則と使用状況の分析

この記事では、例を使用して、MySQL データベースの最適化のためのインデックス実装の原則と使用方法...

Gojs がアリのラインアニメーション効果を実装

目次1. Gojsの実装1. 描画2. 破線の実装3. 点線を動かす2. 点線と点線アニメーションの...

MySQL 8.0.11 インストール概要チュートリアル図

インストール環境: CAT /etc/os-release CentOS システムのバージョン情報を...

JavaScript は自由に移動するウィンドウのマウス制御を実装します

この記事では、フリーウィンドウのマウス制御を実現するためのJavaScriptの具体的なコードを参考...

Ubuntu のインストール グラフィック ドライバーと Cuda チュートリアル

目次1. 元のドライバーをアンインストールする2. 新しいグラフィックカードドライバーをダウンロード...

独自のサーバーを素早く構築する方法の詳細なチュートリアル(Java 環境)

1. サーバーの購入1. 私はAlibaba Cloudのサーバーを選択しました。学生向けで月額9...

Reactでカスタムフックを作成する方法を教えます

1. カスタムフックとは何かロジックの再利用簡単に言えば、カスタム フックを使用すると、特定のコンポ...

Docker Nginxコンテナの制作と展開の実装方法

クイックスタート1. Docker Hubでnginxイメージを見つけるdocker 検索 ngin...