Docker アプリが内部でどのような動作をしているか知りたいですか? コンテナの動きをすべて記録する「ログ」という隠れたウィンドウについて学んでみましょう。ログは問題を解決するのに非常に役立ちます。始める前に、Docker と Docker Compose が何かを簡単に見てみましょう。
Docker を使用すると、アプリケーションを小さなコンテナにパッケージ化でき、ほぼすべてのオペレーティングシステムで依存関係なく実行できます。アプリを「コンテナ」と呼ばれる小さなボックスに入れて、どこでも同じように実行するようなものです。コンテナについて理解することは、Docker Compose について学ぶための重要な前提条件です。最初に Docker についてのブログをお読みになることをお勧めします。 コンテナ化がもたらすメリット。
Docker Compose は Docker と一緒に提供され、複数のコンテナ化されたアプリケーション開発を簡素化し、サービス、ネットワーク、ストレージをチェーンして接続します。Docker コンテナログと Docker Compose ログにより、開発者は各コンテナの動作を確認できます。
Docker Compose ログについて知りたいですか?ここがぴったりの場所です。このブログでは Docker Compose ログの基本を説明し、より詳細な内容も扱います。プロジェクトで Docker Compose を最大限に活用する方法を学びましょう。
Docker Compose ログの重要性
Dockerを使ってアプリをリリースしたものの、Dockerのログ設定を忘れた開発者を想像してください。最初は問題なく動作しているように見えます。しかしすぐにユーザーがエラーを報告し始め、アプリが遅くなります。Dockerのログがなければ、開発者はDockerコンテナ内で何が起きたのかを追跡できません。Docker Composeログはこれらのコンテナの詳細な記録です。何が起きたかのあらゆる詳細を記録するため、後で問題を特定して修正する際に欠かせません。
開発者またはシステム管理者なら、マルチチェーン アプリケーション内および間での処理を把握する必要があります。Docker Compose ログはそのための強力な武器です。では、なぜこのログが必要なのでしょうか。
-
トラブルシューティングとデバッグ
アプリケーションが正常に動作していない、またはエラーが発生している場合は、docker ログを確認してください。Docker ログは、問題を追跡する際に最初に参照するリソースです。docker ログを調べることで、開発者はコードのバグ、設定ミス、またはリソースの問題など、問題の根本原因と発生源を特定できます。
-
アプリケーションのヘルスモニタリング
アプリケーションログを定期的に監視することで、サービス全体の健全性を把握できます。ログには繰り返されるエラーや遅い応答など、問題の初期兆候が現れます。これらのパターンを早期に察知することで、将来の問題を防ぐことができます。
-
監査とコンプライアンス
特定の基準に準拠する必要があるアプリケーションでは、Docker ログがアプリケーションのガイドライン遵守を示す最初の証拠になります。これらのログは、認可されたアクティビティと未認可のアクティビティを監視する際にも重要な役割を果たします。
-
最適化
ログはパフォーマンスデータを提供することで、ソフトウェア最適化のための貴重なリソースになります。たとえば、開発者は実行時間の長いクエリ、非効率なコードパス、または使用率の低いリソースを特定できます。
Docker レシピの作成: Web サーバーをデプロイする
このセクションでは、Docker レシピを一緒に作成する手順を説明します。まず、Docker Compose ログを使って準備を整える必要があります。このためにウェブサーバーをデプロイしましょう。Docker ファイルを作成するには、以下を実行してください nano Dockerfile VPS上の目的のフォルダに以下の内容で作成してから保存してください。
FROM nginx:alpine RUN rm /usr/share/nginx/html/index.html EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]
それで、このコードの各行は何をしているんですか?
- 軽量なベースから始めます。 nginx:alpine.
- 次に、Nginx のデフォルトウェルカムページを削除します。
- 次に、ウェブサーバーが指定のポートでリッスンしているか確認します。 80.
- 最後に、Nginx サーバーを以下で実行します CMD.
Dockerファイルの準備ができました。次のステップに進み、Docker Composeファイルを作成します。構造は以下の通りです。 docker-compose.yml ファイル:
version: '3.8' services: web: build: . ports: - "8080:80" volumes: - ./index.html:/usr/share/nginx/html/index.html
各部分を詳しく説明していきます。
- 使用中のバージョン 3.8.
- 次の行で、サービス名を指定します「web“.
- 次に、Docker に対して現在のフォルダから Web サーバーを構築するよう指示します。
- ホストのポート 8080 をコンテナのポート 80 にマッピングして、Web サーバーが接続を確立できるようにします。
- 最後に、ボリュームの設定をマップします index.html ホストディスクからコンテナへ。その後、 index.html 好きな内容のファイルを作成して、好きな場所に配置できます Dockerfile と docker-compose.yml ファイルが存在します。
次に、Docker Compose を使って Docker コンテナを実行します。実行するコマンドは以下の通りです。 docker-compose up.

このコマンドを実行すると docker-compose up Docker は必要なイメージをインターネットからダウンロードし、設定ファイルの指示に従って構成します。
Webサーバーが起動して実行されているか確認するには、Webブラウザを開き、VPS のIPアドレスを入力して、ポート8080へのアクセスをリクエストしてください。

補足として、次を使用できます docker-compose up -d カンテナをバックグラウンドで実行するために。
Docker Compose でログにアクセスする
これでWebサーバーは起動して実行されています。すでにログを生成し、この情報を保存しています。Docker Composeのログへのアクセスはトラブルシューティングと監視に不可欠です。しかし、これらのログをどのように読めばよいのでしょうか。ここで登場するのが docker-compose logs です。設定が存在するフォルダにいることを確認してから、そのコマンドを実行してください。

ログが生成されている様子をリアルタイムで確認したい場合があります。前のコマンドの末尾に-fを追加して実行するだけです docker-compose logs -f.

Docker ベースのアプリケーションの中には、ログにタイムスタンプを提供しないものもあります。そのため、次を使用できます docker-compose logs -t ログの各行に記録時刻を追加するために。

Docker のログは最新のエントリも表示できます。これを実現するには docker-compose logs --tail 10 を使用して、最新の10個のログエントリを表示してください。Docker Composeはログの末尾表示に対応しており、同様にdockerログの末尾表示は、ログ全体をスクロールすることなく最近のアクティビティを素早く確認したいときに特に便利です。

Docker Composeの主な目的は、複数のコンテナアプリケーションを作成することです。したがって、特定のサービスのログを読む必要がある場合があります。その場合は docker-compose logs -f SERVICE申し訳ございませんが、翻訳対象のテキストが不完全です。「, remembering to replace」という部分だけでは、意味が明確ではありません。 完全な英文を提供していただければ、正確に日本語に翻訳いたします。 SERVICE を実際のサービス名に置き換えて使用してください。

Dockerロギング
Docker エコシステムは、特に大規模な環境で、統合アプリケーション向けにより複雑になる可能性があります。すでに知っているとおり、各コンテナはログを生成します。したがって、ロギングドライバーと呼ばれるメカニズムが、ログの受け取り、配信、保存を担当します。デフォルトでは、Docker はロギングドライバーに JSON ファイルを使用しますが、各種の利点と欠点がある他のドライバーもサポートしています。
ログはトラブルシューティングとシステムパフォーマンスの向上を含むさまざまな分野で重要であることに、誰もが同意しています。以下では、コンテナログを使用する主な側面の2つについて説明します
- モニタリング: ログの主な目的は監視です。コンテナ化されたアプリケーションの全体的な状態を把握するのに役立ちます。
- トラブルシューティング: 問題が発生した場合、ログはアプリケーションの不具合を検出するのに役立ちます。
docker logs と docker compose logs は継続的に生成されるため、VPS ストレージ全体を消費する可能性があります。したがって、ログローテーションポリシーと呼ばれるディスク容量管理戦略が必要です。このポリシーを作成して使用するには、 docker-compose.yml ファイルに戻ってそれを開きます。次に、以下の設定でロギングセクションを追加します。
version: '3.8' services: web: build: . ports: - "8080:80" volumes: - ./index.htm:/usr/share/nginx/html/index.htm logging: driver: json-file options: max-size: "200k" max-file: "10"
常に調整できます。 max-size と max-file ニーズに合わせて。
Docker ログ配信モデル
より高度な環境では、エンジニアはデフォルト JSON ドライバーとは異なるロギングモデルを選択する場合があります。Syslog や fluentd などが該当します。ただし、JSON ファイルドライバーはほとんどのロギングシナリオに適しており、デフォルトモードから変更する必要がない場合もあることを覚えておくことが重要です。
アプリケーションのアーキテクチャや組織の要件によっては、ログアグリゲーターと呼ばれる集中ログソリューションの使用を余儀なくされる場合があります。これらのサービスには Elasticsearch、Logstash、Kibana などが含まれ、様々なソースからログを受け取り、それらを一元的な場所で統合、保存、分析するよう設計されています。
逆に、より費用効率の高いストレージソリューションを使用してログを保存する必要があります。VPS が高速で高価なストレージを使用しているシナリオを考えてみてください。今後の参照にのみ必要になるかもしれないログを保存するために、そのようなプレミアムリソースを使用するのは経済的ではないかもしれません。
多くのロギングモデルが利用可能であり、それぞれに長所と短所があります。各モデルを注意深く評価し、特定のニーズに基づいて選択することが重要です。
ウェブサイトやリモートデスクトップをホストするために、エコノミーまたはプレミアムなLinux VPSを最安値で手に入れましょう。VPSはLinux KVMで動作して効率を向上させ、NVMe SSDストレージを備えた強力なハードウェアで速度を高めます。
詳細を見る結論
Docker Compose ログの理解は重要です。Docker アプリケーションの管理とデバッグに役立ちます。これらのログへのアクセスと監視の方法を学ぶことで、問題解決能力が向上し、アプリケーションのパフォーマンスとセキュリティが向上します。開発中でもシステム管理中でも、Docker Compose ログの使用は必須です。コンテナ管理を効果的にします。
よくあるご質問
Docker Compose ログを時間でフィルタリングするにはどうすればよいですか?
Docker Compose は、時間でログをフィルタリングする直接的な方法は提供していません。ただし、grep でパイプ処理してパターンマッチングすることでログをフィルタリングできます。例えば、docker-compose logs | grep "2023-04-06" を使用でき、「2023-04-06」を検索する特定の日付または時刻パターンに置き換えます。
Docker Compose で起動したコンテナを停止するにはどうすればよいですか?
docker-compose.yml ファイルが格納されているディレクトリに移動し、docker-compose down コマンドを実行します。
ログファイルを手動で削除するにはどうすればよいですか?
docker-compose.yml ファイルでログローテーションを設定する代わりに、/var/lib/docker/containers/<container_id>/ から Docker JSON ログファイルを手動で削除することができます。その前に、docker ps -a で Docker コンテナ ID を確認する必要があります。
Docker ログをテールすることはできますか?
はい、できます。そうするには、docker logs コマンドを -f または -follow オプション付きで使用する必要があります。これで Docker ログをテールできます。