GNU/Linux >> Linux の 問題 >  >> Panels >> Docker

Dockerログ:ログとは何かとその使用方法(例を含む)

この記事では、Dockerログとその操作方法について知っておく必要のあるすべてのことを紹介します。

Dockerコンテナー内で実行されているアプリケーションが常に正しく動作する場合、作業ははるかに簡単になります。物事が必然的にうまくいかなくなったときは、その方法と理由を理解するための診断情報が必要です。

システム管理者であり、コンテナ化されたアプリケーションの構築と管理を担当している場合、Dockerログは最も重要なものの1つです。ログの処理は、エラーを明らかにし、デバッグを支援し、アプリケーションのパフォーマンスを最適化するための最良の方法の1つです。

それでは、Dockerログとそのログファイルについて詳しく見ていきましょう。

Dockerログとは

まず、ログがどのように生成されるかを理解する必要があります。

一言で言えば、Dockerログは実行中のコンテナのコンソール出力ですstdoutを提供します (標準出力)およびstderr (標準エラー)コンテナー内で実行されるプロセスのストリーム。コンテナ内でDockerはstdoutを監視します およびstderr ストリームから出力を収集します。これがコンテナログのソースです。

Dockerにログインすることは、他の場所にログインすることと同じではありません。 Dockerでは、すべてがstdoutに書き込まれます およびstderr ストリームは暗黙的にロギングドライバーに送信されます。ロギングドライバーは、これらのストリームにアクセスしてログをファイルに送信するメカニズムを提供します。 Dockerログのデフォルトドライバーは「json-file」で、Dockerホスト上のローカルファイルにJSON形式でログを書き込みます。

コンテナに保存されているログは、終了またはシャットダウンすると削除されます。

以下の例は、json-fileドライバーを使用して作成されたJSONログを示しています。

{"log":"Adding password for user webdav\n","stream":"stderr","time":"2021-08-01T15:58:05.329724917Z"}

次のコマンドを使用して、現在のデフォルトのロギングドライバーを見つけることができます。

docker info --format '{{.LoggingDriver}}'
json-file

Dockerログはどこに保存されますか

JSONであるデフォルトのログ形式を使用する場合、コンテナのログは/var/lib/docker/containers/にあります。 LinuxDockerホストのディレクトリ。

/var/lib/docker/containers/<container-id>/<container-id>-json.log

上記のパスでは、<container-id> idです 実行中のコンテナの。どのidかわからない場合 はどのコンテナに関連しているので、docker container lsを実行できます 実行中のすべてのコンテナを一覧表示するコマンド。

docker container ls
CONTAINER ID   IMAGE                          COMMAND                  CREATED          STATUS          PORTS                                NAMES
99e9b6f4b1a3   jbbodart/alpine-nginx-webdav   "/bin/sh -c '/entryp…"   51 minutes ago   Up 51 minutes   0.0.0.0:80->80/tcp, :::80->80/tcp    webdav

Dockerログを表示する方法

コンテナを実行していて、このコンテナのDockerログにアクセスしたいとします。このタスクをどのように達成できますか?

まず、次のコマンドを使用して、現在実行中のコンテナを確認できます。

docker container ls
CONTAINER ID   IMAGE                          COMMAND                  CREATED          STATUS          PORTS                                NAMES
99e9b6f4b1a3   jbbodart/alpine-nginx-webdav   "/bin/sh -c '/entryp…"   58 minutes ago   Up 58 minutes   0.0.0.0:80->80/tcp, :::80->80/tcp    webdav

このコマンドは、実行中のコンテナーのリストを出力します。この場合、最も重要なパラメータは CONTAINER IDです。 、次のステップで使用します。

コンテナが実行されていることを確認したので、コンテナIDを使用しましょう。 すべてのログを表示します。

Dockerログの表示

コンテナログをクエリするには、docker logsを使用します コマンド。 これは、実行中のコンテナーによってログに記録されたすべての情報を表示するコマンドです。 docker logs CONTAINER_IDを使用 、一意のIDで識別される特定のコンテナによってブロードキャストされたすべてのログを表示できます。

docker logs 99e9b6f4b1a3
172.17.0.1 - webdav [01/Aug/2021:18:38:39 +0000] "GET /favicon.ico HTTP/1.1" 404 555 "http://localhost/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36"
2021/08/01 18:39:09 [info] 10#10: *3 client 172.17.0.1 closed keepalive connection
172.17.0.1 - webdav [01/Aug/2021:18:39:09 +0000] "PUT /docker-logs.png HTTP/1.1" 201 25 "-" "curl/7.78.0"

コンテナログを追跡する方法

これによりログが表示されますが、継続的なログ出力を表示することはできません。 -fを使用する フラグはDockerコンテナログに従います。

docker logs -f 99e9b6f4b1a3
最新の行のみを表示

場合によっては、コンテナの最新の10ログ行のみをすばやく確認する必要があります。 --tailを使用できます 表示するログの数を指定するオプション。

docker logs --tail 10 99e9b6f4b1a3
特定の日付以降のログを表示

Dockerログを検査するときは、情報が殺到しないように、出力を特定の行数に制限したいことがよくあります。

特定の時点から現在までのログを表示する場合は、--since オプションはこのタスクに役立ちます。

たとえば、20分以降のコンテナログを表示するには、次のように記述します。

docker logs --since 20m 99e9b6f4b1a3

ISO形式で提供されている限り、日付形式を作成することもできます。

docker logs --since 2021-07-19T10:00:00 99e9b6f4b1a3
特定の日付までのログの表示

特定の日付までのログを表示するには、--untilを使用します 日付または期間のオプション。

docker logs --until 20m 99e9b6f4b1a3

または、--sinceに対して以前と同じように日付形式を指定することもできます。 オプション。

docker logs --until 
2021-07-19T10:00:00 99e9b6f4b1a3

結論

Dockerログは、問題のデバッグとトラブルシューティングをより迅速に行うのに役立ちます。このチュートリアルでは、それらが何であるか、それらを検査する方法、およびそれらを監視するためのオプションの使用方法を学習しました。

ご質問やご意見がございましたら、お気軽にコメントをお寄せください。


Docker
  1. Linuxでの例で「cat」および「tac」コマンドを使用する方法

  2. Linuxでパイプと名前付きパイプを使用する方法(例付き)

  3. SELinux モードとは何か、およびその設定方法

  1. Dockerとは何ですか?コンテナの使用方法を学ぶ–例を挙げて説明

  2. Dockerボリュームとは何ですか?また、それらをどのように使用しますか?

  3. リモートDockerホストを使用する方法と理由

  1. Tmuxチュートリアル:コマンド例をインストールして使用する方法

  2. CentOSにDockerComposeをインストールして使用する方法

  3. docker logs コマンドで --since オプションを使用する方法