Docker を使用してアプリケーションを管理する場合、共通の要件はアプリケーション ログを効果的に管理することです。 Docker コンテナ内のログを出力する方法は、すべての Docker ユーザーが習得する必要があるスキルの 1 つです。この記事では、コンテナー ログを出力する方法や、Docker が提供するツールを使用してログを効果的に管理する方法など、Docker のコンテナー ログ管理について紹介します。
1. Docker コンテナ ログの概要
Docker コンテナ ログ (コンテナ ログ) は、Docker コンテナ内で実行されているアプリケーションによって出力される情報レコードを指します。これらのレコードには、アプリケーションの実行ステータス、エラー メッセージ、デバッグ出力などが含まれます。このログ情報は、アプリケーションのトラブルシューティングと正常性の監視にとって重要です。
Docker コンテナのログは STDOUT および STDERR を通じて出力され、Docker デーモンによってキャプチャおよび記録されます。 Docker は、デフォルトでコンテナーのログをホストの /var/lib/docker/containers ディレクトリに保存します。
2. Docker コンテナー ログの印刷
Docker には、コンテナー ログを表示する複数の方法が用意されています。以下では、Docker コンテナーのログを表示するために一般的に使用されるいくつかの方法を紹介します。
- docker logs コマンド
docker logs コマンドは、Docker コンテナーのログを表示する最も簡単で最も一般的に使用される方法です。このコマンドを使用すると、コンテナーのすべてのログ情報を簡単に表示できます。
構文:
docker logs [OPTIONS] CONTAINER
このうち、OPTIONS パラメーターには次のものが含まれます:
-a、すべてのコンテナー
- -詳細、追加のログ出力情報を表示します
#--フォロー、ログ出力を追跡します
#--指定された時刻から出力を開始するタイムスタンプを指定します
##-- tail、ログ情報の最後の N 行のみを出力します。
--timestamps、タイムスタンプを表示します。
例:
$ docker logs my_container
このコマンドは、 Output my_container コンテナーのすべてのログ情報。
コンテナ ログ ファイルの表示
- bash コマンドを使用して Docker コンテナの bash シェルを取得し、コンテナのログ ファイルを表示できます。
構文:
$ docker exec -it CONTAINER bash
$ cd /var/log
$ ls
コマンドの最初の行で bash に入ることができます。コンテナー シェルの 2 番目のコマンドはログ ファイルが存在するディレクトリに移動し、3 番目のコマンドはログ ファイルを一覧表示します。
例:
$ docker exec -it my_container bash
$ cd /var/log
$ ls
Docker ログ ドライバーを使用する
- Docker ログ ドライバーは、ELK などのサードパーティのログ管理ツールへのコンテナー ログの送信をサポートします。 Docker ログ ドライバーを構成することで、コンテナーのログを簡単に管理、フィルタリング、転送できます。一般的に使用されるログ ドライバーの一部を次に示します。
json-file: コンテナー ログを Json 形式でローカル ファイルに保存します
syslog: syslog プロトコルを通じてコンテナー ログを syslog サーバーに送信します
journald: systemd-journald サービスを通じてコンテナー ログを Linux ジャーナルに送信し、ホスト ログ ファイル システムに記録します。
Docker ログ ドライバーを使用するための具体的な手順は次のとおりです。
1. ロギングドライバーを作成します。次のように:
$ docker plugin install --grant-all-permissions dev-logging
2. コンテナを起動し、ログ ドライバーを指定します:
$ docker run - - name=my_container --log-driver=dev-logging IMAGE
3. Docker ログ管理
Docker はコンテナ ログを管理するための便利なツールをいくつか提供しており、フィルタリングや検索、ローテーション、ログを効果的に管理するための他の方法。
docker logs コマンドを使用してフィルタリングする
- docker logs コマンドの --grep パラメータを使用して、パラメータに基づいてコンテナー ログをフィルタリングします。たとえば、次のコマンドは、my_container コンテナ内の all.log ファイルにすべてのエラー情報を出力します:
$ docker logs my_container | grep ERROR
Logrotate を使用してログをローテーションします。
- Logrotate は非常に優れたログ ローテーション ツールです。 Logrotate ツールを Docker コンテナーにインストールすると、コンテナーのログを簡単にローテーションできます。
logrotate のインストール:
$ apt-get update && apt-get -y -q install logrotate
サードパーティ ツールの使用
- Logplex は、アプリケーションとコンポーネントのログを管理するために Heroku によって開発されたクラウド ロギング サービスです。アプリケーションによって出力されたログは、Logplex API を介して Logplex に簡単にアップロードでき、ログの表示とクエリのフィルタリングをサポートします。
この時点で、ログの印刷方法や、ログのフィルタリング、ローテーション、その他の操作に Docker ログ ドライバーを使用する方法など、基本的な Docker コンテナーのログ管理スキルを習得しました。この記事がお役に立てば幸いです。
以上がDocker がログを出力する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。