コンテナ テクノロジの人気と応用により、Docker は多くの企業にとって不可欠な要素になりました。 Docker を開発およびデプロイに使用する場合、コンテナーのログ分析と例外のトラブルシューティングが非常に重要です。この記事では、Docker を使用してコンテナーのログ分析と例外のトラブルシューティングを行う方法と、詳細なコード例を紹介します。
1. Docker ログの概要
Docker ログとは、コンテナーの標準出力とエラー出力を含む、コンテナーの出力を指します。 stdout および stderr タワーを介して制御します。 Docker はこれらの出力をキャプチャし、ホスト マシン上のファイルに保存します。
Docker では、各コンテナに独自のログがあります。Docker コマンドを使用してコンテナのログを表示できます:
docker logs [CONTAINER ID]
ここで、CONTAINER ID はコンテナの ID を指します。
2. Docker を使用してコンテナ ログを分析する
Docker を使用してコンテナ ログを分析すると、コンテナの実行ステータスを理解し、既存の問題を見つけて修復するのに役立ちます。 Docker を使用してコンテナー ログを分析するための具体的な手順は次のとおりです:
まず、コンテナー ログを表示して、コンテナーに異常があるかどうかを判断する必要があります。 。 Docker コマンドを使用して、コンテナーのログを表示します:
docker logs [CONTAINER ID]
コンテナーの最新 10 個のログを表示したい場合は、次のコマンドを使用できます:
docker logs --tail 10 [CONTAINER ID]
コンテナーのログを表示する場合、キーワードに基づいてログをフィルター処理して、コンテナーの実行ステータスをより正確に理解できます。次のコマンドを使用して、キーワードに基づいてログをフィルタリングします:
docker logs [CONTAINER ID] | grep [KEYWORD]
たとえば、「error」を含むログを検索します:
docker logs [CONTAINER ID] | grep error
Dockerコンテナのログはホスト上のファイルに保存されます。コンテナのログをファイルに出力して、後で分析することができます。次のコマンドを使用して、コンテナーのログをファイルに出力します:
docker logs [CONTAINER ID] > [LOG FILE]
たとえば、コンテナーのログをファイル "container.log" に出力します:
docker logs [CONTAINER ID] > container.log
より詳細なコンテナ ログ分析を実行したい場合は、サードパーティ ツールを使用できます。たとえば、ログ分析には ELK (Elasticsearch Logstash Kibana) を使用します。以下に、ELK を使用してコンテナーのログ分析を行う方法を簡単に紹介します。
Docker を使用して ELK をインストールできます。具体的な手順は次のとおりです:
docker pull sebp/elk docker run -p 5601:5601 -p 9200:9200 -p 5044:5044 -it --name elk sebp/elk
上記のコマンドでは、sebp/elk イメージがプルされ、 a 「elk」という名前のコンテナ。 Kibana パネルには、アドレス http://localhost:5601/ を通じてアクセスできます。
Logstash では、入力、フィルター、出力を設定する必要があります。以下は、コンテナ ログを Elasticsearch に入力するための単純な Logstash 設定ファイルです。
input { file { type => "docker" path => "/var/lib/docker/containers/*/*.log" exclude => "*.gz" } } filter { if [type] == "docker" { grok { match => { "message" => "[%{TIMESTAMP_ISO8601:timestamp}] %{LOGLEVEL:loglevel} %{GREEDYDATA:message}" } overwrite => [ "message" ] } date { match => [ "timestamp", "ISO8601" ] timezone => "UTC" } } } output { stdout { codec => rubydebug } elasticsearch { hosts => ["localhost:9200"] index => "docker-%{+YYYY.MM.dd}" document_type => "docker" } }
上記の設定ファイルでは、「docker」という名前の入力が定義されており、入力パスは /var/lib です。 すべての .log ファイル/docker/containers/ の下にあります。フィルターでは、grok パターンを使用してログを照合し、タイムスタンプを ISO8601 時間形式に変換します。 [出力] で、ログを Elasticsearch に出力します。
上記の構成を完了すると、コンテナ ログを表示して分析できます。 Kibana パネルで、「Discover」ページを選択して、すべてのログ情報を表示します。
3. Docker を使用してコンテナ例外のトラブルシューティングを行う
Docker でコンテナ例外のトラブルシューティングを行うことも非常に重要です。コンテナ内に異常があると、アプリケーションが正常に実行できなくなったり、システム全体がクラッシュしたりする可能性があります。以下では、Docker を使用してコンテナーの異常をトラブルシューティングする方法について説明します。
次のコマンドを使用してコンテナのステータスを確認できます:
docker ps -a
このコマンドは、すべてのコンテナとそのステータスを一覧表示します。
コンテナのステータスを確認した後、デバッグ用のコンテナに入ることができます。次のコマンドを使用してコンテナに入ります。
docker exec -it [CONTAINER ID] /bin/bash
このうち、CONTAINER ID はコンテナの ID を指します。
コンテナに入ると、コンテナのログを表示し、ログ情報に基づいてデバッグ分析を行うことができます。特定のコマンドは次のとおりです:
docker logs [CONTAINER ID]
コンテナーの異常のトラブルシューティングを行う場合、いくつかのツールを使用すると役立ちます。たとえば、デバッグを容易にするために、コンテナーにデバッグ ツールをインストールします。以下は例です:
docker run -d --name nginx-debug --entrypoint /usr/bin/sleep nginx 9d docker pause nginx-debug docker network connect [NETWORK] nginx-debug docker attach --sig-proxy=false nginx-debug
上記のコマンドでは、最初に「nginx-debug」という名前のコンテナーが作成され、いくつかの構成が実行されます。このコンテナをデバッグに使用できます。
4. 概要
Docker を使用してコンテナーのログを分析し、例外のトラブルシューティングを行う場合、Docker コマンドを使用して表示および分析することも、サードパーティのツールを使用してより深く理解することもできます。 . コンテナーのログを分析し、例外のトラブルシューティングを行います。上記の内容が、Docker を開発やデプロイに使用する際の参考になれば幸いです。また、この記事では、読者が関連技術を理解し、学習しやすくするために、詳細なコード例も提供します。
以上がコンテナーのログ分析と例外のトラブルシューティングに Docker を使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。