Dockerがログファイルを保存する場所の詳細な説明

Dockerがログファイルを保存する場所の詳細な説明

ほとんどの Linux プログラムのデバッグには通常、ログ ファイルの調査が含まれますが、これは複雑なプロセスになる場合があります。ただし、Docker のコンテナ化された環境で実行する場合は、運用環境でアプリケーションをデバッグするために、より具体的なツールを使用する必要があります。

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

簡単に答えると、Docker はコンテナ ログを主な保存場所である /var/lib/docker/ に保存します。各コンテナには、その ID (通常表示される短縮 ID ではなく完全な ID) に固有のログがあり、次のようにアクセスできます。

ログファイル

そこに保存されますが、JSON 形式であるため読みにくく、完全なコンテナー ID を使用する必要があるのは面倒です。 Docker には、それらを表示するための組み込みコマンドが用意されています。

docker ログ -f e4bd48ef3103

ここで、-f フラグはプロンプトを開いたままにして、ファイル内の新しいエントリを「監視」します。また、--tail を使用してファイルを末尾まで追跡したり、--timestamps を使用してログ時間を表示したり、--until および --since を使用して時間に基づいてフィルタリングしたりすることもできます。

Docker Compose を使用する場合は、その中で log コマンドを使用してすべてのログを簡単に表示できます。

docker-compose ログ

ただし、多くの用途に役立つ STDOUT と STDERR は、Docker ファイル内の「CMD」で指定されたエントリ ポイントのコンソール出力のみを表示することに気付くでしょう。多くのアプリケーションには専用のログ システムがあり、通常は /var/log/nginx/access.log にログが記録されます。このようなログには、Docker を介してホスト側からアクセスできます。

コンテナ内のアプリケーションからのログを表示する

コンテナによっては、これが必要ない場合もあります。たとえば、デフォルトの NGINX コンテナは、ログ検査を簡素化するために Docker ログを STDOUT に送信するように設定されています。これは、ログ ファイルへの /dev/stdout シンボリック リンクを使用して実行されます。コンテナーに同様のものを設定できます。

実行 ln -sf /dev/stdout /var/log/nginx/access.log 
&& ln -sf /dev/stderr /var/log/nginx/error.log

ただし、コンテナ内の特定のファイルを表示したい場合は、それが可能です。 Docker には exec -it コマンドが用意されており、実行中の Docker プロセス内で任意のコマンドを実行できます。これを使用すると、Docker コンテナ内のログ ファイルを追跡できます。

docker exec -it e4bd48ef3103 tail -f log.txt

これにより、任意のコマンドを実行できるため、 docker exec -it ./bin/bash として起動する限り、journalctl やその他の任意のデバッグ戦略を使用できます。ジャンプして調べたい場合は、実行することもできます。

ホスティング サービスに適した、より永続的なソリューションは、Docker ボリューム マウントを使用することです。 /var/log/nginx のようなディレクトリをホストから見えるボリュームにバインドマウントできます。まず、新しいボリュームを作成します。

docker ボリューム作成 nginx-logs

次のコマンドでコンテナ --mount を実行します。

docker run -d \
--name devtest \
--mount ソース=nginx-logs、ターゲット=/var/log/nginx \
nginx:最新

Docker Compose を使用すると、プロセスを自動化できます。

バージョン: "3.0"
サービス:
  ウェブ:
    画像: nginx:最新
    ポート:
      - 「80:80」
    ボリューム:
      - nginx-logs:/var/log/nginx/
ボリューム:
  nginx ログ:

この方法では、ホスト上の任意のログ集約サービスがログファイルを直接取り込むことができます。

Dockerデーモンのログを表示する

特定のコンテナ化されたアプリケーションではなく、サーバー上の Docker サービス全体の特定のログを表示する場合は、journalctl ログを表示する必要があります。

sudo journalctl -fu docker.service

ほとんどのシステムではここに保存されますが、一部のシステムでは場所が異なります。

  • Amazon Linux: /var/log/docker
  • CentOS/RHEL: /var/log/messages | grep docker
  • Apple: ~/Library/Containers/com.docker.docker/Data/log/vm/dockerd.log
  • Windows: AppData\Roaming\Docker\log\vm\dockerd.log

Docker がログファイルを保存する場所についての説明はこれで終わりです。Docker がログファイルを保存する場所の詳細については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Docker コンテナのログを表示およびクリーンアップする方法 (テスト済みで効果的)
  • Dockerコンテナアプリケーションログの表示方法
  • Docker コンテナ ログの中国語文字化け問題の解決方法
  • Dockerコンテナのログ処理の詳細な説明
  • Docker ログが多すぎてディスクがいっぱいになる場合の対処方法
  • Dockerでnginxログをローリングするアイデアの詳細な説明
  • Docker を使用して ELK ログ システムを構築する例
  • dockerログマウントの問題を解決する
  • Dockerコンテナのログ分析

<<:  Element-UI の Select と Cascader にポップアップ下部アクション ボタンを追加する方法

>>:  フロントエンドAIカットのコツ(体験談)

推薦する

ウェブページの表の分割線を削除する方法

<br />Web テーブルの分割線を削除する方法。実際、上記の 3 つの表はいずれも ...

JavaScript でオブザーバー パターンを実装する方法

目次概要オブザーバーパターンの応用シナリオオブザーバーパターンの実装要約する概要オブザーバー パター...

Dockerはローカルイメージとコンテナの保存場所を設定します

指定したサイズより大きいファイルを検索するには、find コマンドを使用します。 検索 / -typ...

WeChatアプレットのサイレントログインとカスタムログイン状態の維持の詳細な説明

目次1. 背景2. サイレントログインとは何ですか? 3. カスタムログイン状態を維持する方法4. ...

クールな花火効果を実現するjs

この記事では、jsを使用してクールな花火効果を実現するための具体的なコードを参考までに共有します。具...

MySQL 更新セットとの違い

目次問題の説明原因分析解決問題の説明最近、奇妙な問い合わせを受けました。更新ステートメントはエラーな...

まだ*を選択しますか?

アプリケーションが牛のように遅い理由は数多くあります。ネットワーク、システム アーキテクチャ、または...

JavaScriptでポインターの位置を取得する方法を教えます

JavaScript でポインターの位置を取得する方法は、イベント オブジェクトの pageX と ...

MySQLデータベースでサポートされているストレージエンジンの比較

目次ストレージエンジンMySQL でサポートされているストレージ エンジン同時実行制御ロック粒子をロ...

WeChatアプレットbindtapとcatchtapの違いの詳細な説明

目次1. イベントとは何ですか? 2. イベントの使い方3. バインドタップとキャッチタップの違い4...

MySQL テーブルにおける非主キー列オーバーフロー監視の詳細な説明

今日もまた罠に落ちてしまいました。 私は以前MySQLの主キーオーバーフローに遭遇したことがあり、そ...

Hyper-v仮想マシンを使用してCentos7をインストールする

目次導入準備するシステムイメージをダウンロードHyper-Vを有効にする新しい仮想ネットワークスイッ...

MySQLのslave_exec_modeパラメータの詳細な説明

今日、slave_exec_modeというパラメータを偶然見ました。マニュアルの説明から、このパラメ...

JSホモロジー戦略とCSRFの詳細な説明

目次概要同一生成元ポリシー (SOP)相同制限クロスドメインをバイパスクロスサイトリクエストフォージ...

複数の古いプレーヤーの埋め込みコード

ウェブページに表示されるプレーヤーは、WMP/RealPlayer/Flash Player に過ぎ...