Dockerコンテナログを表示およびクリーンアップする方法

米国の第3代大統領(トーマス・ジェファーソン)はかつて、「他の人が信じたり否定したりするからといって、何かを信じたり否定したりしないでください。神はあなたに真実と誤りを判断する心を与えてくれました。そうすれば、それを使うことができます!」 。

一緒に走らない日は頑張ってね!

検索

    通常、dockerを使用してテスト環境プログラムをデプロイしますが、デプロイされていません。最後に、Dockerコンテナーで実行されているログが多すぎるため、システムストレージがいっぱいになり、サービスに正常にアクセスできなかったことがわかりました。(最高のログレベルのデバッガーがサービスで有効になっています)。

    問題が発生した場合は、それを解決する方法を見つけてください。Baiduはそれを持っており、最終的に解決策を見つけました。ここにメモしてください。

ログ分類

ログは2つのカテゴリに分けられます。1つはDockerエンジンログで、もう1つはコンテナログです。

  • Dockerエンジンログ
    Dockerエンジンログは通常、Upstart(Ubuntu 14.04)またはsystemd(CentOS 7、Ubuntu 16.04)に渡されます。前者は通常/var/log/upstart/docker.logの下にあり、後者は通常jounarlctl -udockerによって読み取られます。異なるシステムの場所は異なります。以下を参照してください。
システム ログの場所
Ubuntu(14.04) /var/log/upstart/docker.log
Ubuntu(16.04) journalctl -u docker.service
CentOS 7 / RHEL 7 / Fedora journalctl -u docker.service
CoreOS journalctl -u docker.service
OpenSuSE journalctl -u docker.service
OSX 〜/ Library / Containers / com.docker.docker / Data / com.docker.driver.amd64-linux / log / d‌ ocker.log
Debian GNU / Linux 7 /var/log/daemon.log
Debian GNU / Linux 8 journalctl -u docker.service
Boot2Docker /var/log/docker.log
  • Dockerコンテナログ
    各コンテナのログは、デフォルトで/ var / lib / docker / containers / <container id> / <container id> -json.logにjsonファイル形式で保存されます。
  1. すべてのコンテナのログファイルを検索する
find /var/lib/docker/containers -name *.log
  1. ログの場所を表示する
docker inspect --format='{
    
    {.LogPath}}' <container_name>
  1. リアルタイムクエリコンテンツ
tail -f `docker inspect --format='{
    
    {.LogPath}}' <container_name>`
  • ログを表示およびクリーンアップするためのスクリプトの作成
         dockerによって生成されたログとファイルの保存場所を表示する方法がわかったので、スクリプトの作成を開始しましょう。参照は次のとおりです。
  1. コンテナのログサイズを表示する— logs_file_size.sh
echo "======== docker containers logs file size ========"
logs=$(find /var/lib/docker/containers/ -name *-json.log)
for log in $logs
        do
             ls -lh $log
        done
  1. ログをクリーンアップします— clean_containers_logs.sh

echo "======== start clean docker containers logs ========"

logs=$(find /var/lib/docker/containers/ -name *-json.log)

for log in $logs
        do
                echo "clean logs : $log"
                cat /dev/null > $log
        done

echo "======== end clean docker containers logs ========"

cat / dev / null> logは、logがL O Gテーブルに空になっログファイルの内容が表示さます

shlogs_file_size.shとshclean_containers_logs.shを介して2つのシェルスクリプトを実行できます。

参考記事:
https //wxnacy.com/2018/06/14/docker-log/
https://www.cnblogs.com/YatHo/p/7866029.html
https://www.choupangxia.com/2019/ 09/15 / linux-centos-var-lib-docker-container

おすすめ

転載: blog.csdn.net/qq_37640410/article/details/108167287