Docker クリーニングキラー/Docker オーバーレイ ファイルがディスク領域を大量に占有する

Docker クリーニングキラー/Docker オーバーレイ ファイルがディスク領域を大量に占有する

[インターネット上の移行ファイルをすべて見ると、信頼性が低く、症状のみを治療し、根本的な原因を治療していないと感じます (これは新世代のコーダーのあるべき姿ではありません)]

du -sh* で確認したところ、オーバーレイフォルダが爆発していたことがわかりました。

docker system prune -a は 7g のスペースしかクリアせず、フォルダはまだ 30g のままです

ディスク使用量が 100% から約 80% に低下しましたが、これは許容範囲ではありません。さらに 2 日間実行してもまだいっぱいです。

ついにキラーが登場、portainerをインストール

Dockerのインストールチュートリアル

ここではdokcer-composeを使用してデプロイしているので、構成は次のとおりです。

 ポーター:
  画像: portainer/portainer
  再起動: 常に
  ポート:
  - 「9000:9000」
  ボリューム:
  - /var/run/docker.sock:/var/run/docker.sock
  - /data/docker/portainer/data:/data

up -d の後、nginx はポートを取得してアクセスします。

使用していないものはすべて削除します。

ディスク使用量を再度確認したら、ようやく安心して漕げるようになりました〜〜〜

追伸:実は、私たちの部署では以前にもこの方法を使ったことがあるのですが… 。 。 。 。えっと、忘れてた。えっと、えっと、えっと。 。 。 。教訓として書き留めておきます〜

追加知識: Centos7 は Docker 用のオーバーレイ ストレージ ドライバーを構成します

前提:

RHEL または CentOS は新しい Docker ストレージ ドライバー (overlay または overlay2) を使用するため、システム カーネル バージョンを 3.10.0-514 以降にアップグレードする必要があります。コーミングの手順は次のとおりです。

カーネルを確認する

バージョン 3.10.0-514 以降

uname -r

3.10.0-514.++++.x86_64

システムアップグレード

sudo yum アップグレード --assumeeyes --tolerant

sudo yum update --assumeeyes を実行します。

カーネルがオーバーレイモジュールをロードしたかどうかを確認する

lsmod | grep オーバーレイ

戻り値が空の場合は、モジュールの読み込みを設定する必要があります

オーバーレイを有効にする

sudo tee /etc/modules-load.d/overlay.conf <<-'EOF'
かぶせる
終了

システムを再起動する

reboot

オーバーレイが有効になっていることを確認する

lsmod | grep オーバーレイ

かぶせる

Dockerストレージパーティションの準備

別のディスクまたはパーティションを準備し、パラメータ -n ftype=1 を追加して xfs としてフォーマットし、そこに /var/lib/docker をマウントすることを強くお勧めします。

理由

XFSファイルシステムをフォーマットするときは、-n ftype=1を追加する必要があります。

パラメータ: -n は実際にファイルシステムを作成せず、作成された情報のみを表示します。

ftype = value を使用すると、inode タイプをディレクトリ構造に格納できるため、readdir と getdents は inode を検索しなくても inode タイプを知ることができます。デフォルトは 0 で、ディレクトリ構造には存在しません。

ローカルディスクをフォーマットする

ローカル ディスクが正しくフォーマットされていることを確認してください。

mkfs.xfs -f -n ftype=1 /dev/sdg5

ディスク情報を確認する

lsblk -a -f 
名前 FSTYPE ラベル UUID マウントポイント
 
├─SDG4             
├─sdg5 xfs 71165973-9e3f-4d8e-9a4e-2c00c0e70efa

ディスクブートマウントを構成する

/etc/fstab の詳細

UUID=71165973-9e3f-4d8e-9a4e-2c00c0e70efa /v​​ar/lib/docker xfs デフォルト 0 0

ディスクを手動でマウントする

マウント -a

ディスクマウント情報を表示する

ブロック

├─sdg5 8:101 0 200G 0 部分 /var/lib/docker

dockerの起動ファイルを変更し、オーバーレイストレージを使用するように設定する

/etc/sysconfig/docker の詳細

# /etc/sysconfig/docker
 
# dockerデーモンの実行方法を変更したい場合は、これらのオプションを変更します
オプション = '--storage-driver=overlay --selinux-enabled --log-driver=journald --signature-verification=false' 
[ -z "${DOCKER_CERT_PATH}" ] の場合;
 DOCKER_CERT_PATH = /etc/docker
フィ

または

デーモン
{
 "ストレージドライバー": "overlay2",
 「ストレージオプション」: [
 "overlay2.override_kernel_check=true"
 ]
}

スタートアップを追加

systemctlデーモンリロード
systemctl ドッカーを起動する
systemctl ドッカーを有効にする

Dockerストレージ関連情報を確認する

$ docker情報
 
コンテナ: 0
画像: 0
ストレージ ドライバー: overlay2
 バックアップファイルシステム: xfs
 d_type をサポート: true <<=== ネイティブオーバーレイの相違点に焦点を当てる: true
<出力は省略>

d_typ をサポートしていないオーバーレイ/オーバーレイ ドライバーで Docker を使用する場合、特定のディレクトリまたはファイルの削除の失敗、ファイルまたはディレクトリの権限やユーザーの設定の失敗など、Docker がファイルを操作するときにエラーが発生する可能性があります。これらは予期しないエラーです。

たとえば、Docker のビルド中に、ビルド プロセス中にファイルの削除などの操作が失敗し、ビルドが停止することがあります。

上の docker クリーニングキラー/docker オーバーレイファイルがディスクを占有しすぎる問題の解決策に関する記事は、編集者が皆さんと共有する内容のすべてです。参考になれば幸いです。また、123WORDPRESS.COM をサポートしていただければ幸いです。

以下もご興味があるかもしれません:
  • Docker Overlay2 のディスク容量使用量が大きすぎてメソッドをクリーンアップできない

<<:  Expressはログイン認証を実装

>>:  Mysql と Oracle でよく使用される複数テーブルの変更ステートメントの概要

推薦する

WeChatミニプログラムでEchartとサブパッケージを使用するための完全な手順

序文休日は終わっていますが、それは別の形で(お腹に触れることで)私たちに現れます。ミニプログラムでデ...

mysqlのデータディレクトリ内のファイルを直接コピーしてデータを復元する実装

mysqlはデータディレクトリ内のファイルをコピーしてデータを復元します背景: MySQL がクラッ...

WeChatアプレットはふるいを振る効果を実現

この記事では、WeChatアプレットの具体的なコードを参考までに共有します。具体的な内容は次のとおり...

JSキャンバスは描画ボードと署名ボードの機能を実現します

この記事では、お絵かきボード/サインボード機能を実現するためのJSキャンバスの具体的なコードを参考ま...

CSSセレクタを使用してラベルスタイルを設定するサンプルコード

CSS セレクターHTML タグにスタイルを設定すると、タグの属性を設定できます。 <div ...

Angularコンポーネントの仲介モードの詳細な説明

目次1. 仲介業者モデル2. 例1. 見積コンポーネントに購入ボタンを追加する2. 親コンポーネント...

mysql 5.6.21 のインストールと設定の詳細な手順

1. 概要MySQL バージョン: 5.6.21ダウンロードアドレス: https://dev.my...

Vmwareでディスクを追加する方法:ディスクを拡張する

この記事では、ディスクを追加または拡張して、Vmare で有効にする方法について説明します。シナリオ...

JS で配列の重複排除を実装する 7 つの方法

目次1. Set()+Array.from() を使用する2. 2層ループ+アレイ接合方式の使用3....

Vue で jsx 構文を正しく使用する方法

目次序文仮想DOM仮想DOMとは仮想DOMの利点レンダリング関数とは何ですか? jsx Vue3 で...

MySQL で固定されていない位置から文字列要素を抽出する方法

序文注: テストデータベースのバージョンはMySQL 8.0ですテストデータ: テーブルzqs(id...

React dva実装コード

目次ドヴァdvaの使用DVAの実装非同期をサポートルーターの実装成し遂げる:ドヴァdva は、red...

Linuxのバージョン情報を復号化する方法

Linux バージョンに関する情報を表示および解釈するのは、見た目よりも少し複雑です。単純なバージョ...

TypeScriptジェネリックの使用

目次1. 使いやすい2. 関数内でジェネリックを使用する3. クラス内でジェネリックを使用する4. ...

JSブラウザストレージの詳しい説明

目次導入クッキークッキーとはクッキー生成方法クッキーの適用シナリオクッキーのデメリット回避策ローカル...