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の詳細に惚れ込むと、重要ではないものの、効率性が向上する可能性がある

ブログ    

推薦する

mysql8.0 パスワードを忘れた場合の修正とネットコマンドのサービス名が無効になる問題

cmdにnet start mysqlと入力すると、プロンプトが表示されます: サービス名が無効です...

nginx+uwsgi で Django プロジェクトを開始するための詳細な手順

Django で Web プロジェクトを開発する場合、開発およびテストのプロセスでは Django ...

vue cli で env を使用するガイド

目次序文紹介-公式設定例序文vueCli を使用してプロジェクトを開発したことのある方は、少しがっか...

JavaScript での実行コンテキストと実行スタックの例の説明

JavaScript - 原則シリーズ日常の開発では、既存のプロジェクトを引き継ぐときは常に、まず他...

Vue で手ぶれ補正を実装するためのサンプルコード

手ぶれ防止: 繰り返しのクリックによるイベントのトリガーを防止まず、揺れとは何でしょうか? 震えるの...

MySQL でシンプルな検索エンジンを実装するためのサンプルコード

目次序文導入ngram全文パーサー全文インデックスを作成する検索方法1. 自然言語検索(自然言語モー...

Dockerとiptablesとブリッジモードのネットワーク分離と通信操作の実装

Docker は、ブリッジ、ホスト、オーバーレイなどの複数のネットワークを提供します。同じ Dock...

WeChatアプレットにナンバープレート入力機能を実装

目次序文背景大きな推測パターンを見つける構造とスタイルコンポーネントの実装パラメータキーボードの種類...

Docker で Jenkins-2.249.3-1.1 をインストールする詳細な手順

目次1. Dockerをインストールする2. Jenkinsイメージファイルを取得する3. マウント...

HttpとHttpsの両方をサポートするNginxの詳細な設定

最近の Web サイトでは Https をサポートすることがほぼ標準機能となっており、Nginx は...

VMware Workstation16 と Navicat リモート接続での Centos7 での MySQL8.0 インストール プロセス

目次1. CentOS7+MySQL8.0、yumソースインストール2. MySQLにログインしてパ...

Mysql は非集計列を選択できません

1. はじめに最近ブログをアップグレードし、記事ページの下部に前の記事と次の記事に直接ジャンプできる...

Vue Element フロントエンドアプリケーション開発 テーブルリスト表示

1. リストクエリインターフェースの効果コード処理ロジックを紹介する前に、まずは感覚的に理解し、レン...

CSS カウンターとコンテンツの概要

コンテンツ プロパティは CSS 2.1 で導入され、:before および :after 疑似要素...

Linux の chown コマンドと chmod コマンドの違いの詳細な説明

Linux システムでは、chmod コマンドと chown コマンドの両方を使用して権限を設定でき...