1. 問題 Docker コンテナのログにより、ホストのディスク領域がいっぱいになりました。 docker logs -f container_name には大量のログがあり、多くのスペースを占有します。使用されていないログはクリーンアップできます。 2. 解決策 2.1 Dockerコンテナのログを見つける Linux では、コンテナ ログは通常 /var/lib/docker/containers/container_id/ に保存されます。json.log で終わるファイル (ビジネス ログ) は非常に大きくなります。各ログ ファイルのサイズを確認するスクリプト docker_log_size.sh は次のとおりです。 #!/bin/sh echo "======== docker コンテナ ログ ファイル サイズ ========" ログ = $(/var/lib/docker/containers/ -name *-json.log を検索) $logsにログイン する ls -lh $ログ 終わり # chmod +x docker_log_size.sh # ./docker_log_size.sh 2.2 Dockerコンテナログのクリーンアップ(症状の対処) Docker コンテナが実行中の場合、rm -rf を使用してログを削除した後、df -h によってディスク領域が解放されないことがわかります。その理由は、Linux または Unix システムでは、rm -rf またはファイル マネージャーを使用してファイルを削除すると、それらのファイルがファイル システムのディレクトリ構造からリンク解除されるためです。ファイルが開いている場合(プロセスによって使用中の場合)、プロセスは引き続きファイルを読み取ることができ、ディスク領域は引き続き占有されます。正しい方法は cat /dev/null > *-json.log です。もちろん、rm -rf で削除して docker を再起動することもできます。次に、ログクリーニング スクリプト clean_docker_log.sh を提供します。内容は次のとおりです。 #!/bin/sh echo "======== クリーンな docker コンテナ ログを開始します =========" ログ = $(/var/lib/docker/containers/ -name *-json.log を検索) $logsにログイン する echo "ログをクリーンアップ: $log" cat /dev/null > $log 終わり echo "======== docker コンテナ ログのクリーンアップを終了 ========" # chmod +x clean_docker_log.sh # ./clean_docker_log.sh しかし、このような清掃を行った後でも、コンテナの丸太は時間が経つと雑草のように再び生えてきます。 2.3 Dockerコンテナのログサイズの設定(根本原因)
上記の方法では、遅かれ早かれログファイルのサイズが増加します。問題を根本的に解決するには、コンテナ サービスのログ サイズの上限を制限する必要があります。これはコンテナdocker-composeのmax-sizeオプションを設定することで実現されます。 nginx: イメージ: nginx:1.12.1 再起動: 常に ログ記録: ドライバー: "json-file" オプション: 最大サイズ: "5g" nginx コンテナを再起動すると、ログ ファイルのサイズは 5 GB に制限されるため、これ以上心配する必要はありません。
新しい /etc/docker/daemon.json を作成します。すでに存在する場合は、新しいものを作成する必要はありません。以下に示すように、log-dirver および log-opts パラメータを追加します。 # vim /etc/docker/daemon.json { "レジストリミラー": ["http://f613ce8f.m.daocloud.io"], "ログ ドライバー":"json ファイル", 「ログ オプション」: {「最大サイズ」:「500 m」、「最大ファイル」:「3」} } max-size=500m は、コンテナ ログ サイズの上限が 500M であることを意味します。 max-file=3 は、コンテナーに id+.json、id+1.json、id+2.json の 3 つのログがあることを意味します。 // Dockerデーモンを再起動します# systemctl daemon-reload # systemctl dockerを再起動します 注意: 設定されたログ サイズは、新しく作成されたコンテナーに対してのみ有効です。 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: vue3 のストアを使用してスクロール位置を記録する例
>>: MySqlは、外部ネットワーク接続クライアントの低速問題を解決するためにskip-name-resolveを使用します。
1. Dockerリモート接続ポートを設定するサーバー上の docker.service ファイルを...
この記事では、サイコロゲームを実装するためのWeChatアプレットの具体的なコードを参考までに共有し...
コードの説明1.1 http:www.baidu.test.com のデフォルトは 80 で、リバー...
1つ目:通常動作 選択 SUM(ddd) AS count_days、 場合 aa.days >...
CSS によるテキストの切り捨てテキストを自動的に切り捨てるスタイル コードを実装するには、次のコー...
<br />かつて、仏印と東坡氏が仏教について雑談していたとき、東坡氏が突然こう言った。...
デフォルトのテーブル名はbase_dataで、json列名はjson_valueです。 json_v...
目次1. 関数バインディング2. パラメータと$eventを使用する3. 1つのイベントに複数の関数...
ネガティブな距離は共感を意味します。序文(疑問の提起):プロダクトマネージャーは機能を把握します。機...
指導トピックウェブページ適用グレード高校2年生授業時間1 クラス教科書分析焦点: 静的および動的ウェ...
著者 | 編集者 Awen | 制作 Tu Min | CSDN (ID: CSDNnews)不満を...
ログインページなどのホームページを作成する場合、大きな背景画像を配置する必要があり、さまざまな画面の...
目次1. 仲介業者モデル2. 例1. 見積コンポーネントに購入ボタンを追加する2. 親コンポーネント...
プロジェクトシナリオ: Dark Horse Vueプロジェクト管理の実践、製品分類の取得、拡張バー...
この記事では、虫眼鏡効果を実現するためのJavaScriptの具体的なコードを参考までに紹介します。...