はじめに
Docker はアプリケーションの開発とデプロイ方法を革新しましたが、デタッチドコンテナのログを管理するのは難しい場合があります。このチュートリアルでは、デタッチド Docker コンテナのログを表示するプロセスを案内し、コンテナ化されたアプリケーションをよりよく理解してトラブルシューティングできるようにします。
💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください
Docker はアプリケーションの開発とデプロイ方法を革新しましたが、デタッチドコンテナのログを管理するのは難しい場合があります。このチュートリアルでは、デタッチド Docker コンテナのログを表示するプロセスを案内し、コンテナ化されたアプリケーションをよりよく理解してトラブルシューティングできるようにします。
Docker は、開発者がコンテナ化された環境でアプリケーションを構築、デプロイ、実行できるようにする人気のオープンソースプラットフォームです。コンテナは、軽量で独立した実行可能なソフトウェアパッケージで、コード、ランタイム、システムツール、ライブラリなど、アプリケーションを実行するために必要なすべてのものを含んでいます。
Docker コンテナは、コードとそのすべての依存関係をパッケージ化する標準化されたソフトウェアの単位です。これにより、アプリケーションはあるコンピューティング環境から別の環境へと迅速かつ確実に実行されます。コンテナは Docker イメージから作成されます。Docker イメージはコンテナの設計図です。Docker イメージは Dockerfile を使用して構築されます。Dockerfile は、ユーザーがコマンドラインで呼び出してイメージを組み立てることができるすべてのコマンドを含むテキストドキュメントです。
Docker はクライアント - サーバーアーキテクチャを使用しています。ここでは、Docker クライアントが Docker デーモンと通信し、Docker デーモンは Docker コンテナの構築、実行、配布を担当します。
コンポーネント | 説明 |
---|---|
Docker クライアント | Docker システムのユーザーインターフェイスです。ユーザーが Docker デーモンと対話できるようにします。 |
Docker デーモン | イメージ、コンテナ、ネットワーク、ボリュームなどの Docker オブジェクトを管理するバックグラウンドプロセスです。 |
Docker レジストリ | Docker イメージのストレージと配布システムです。デフォルトのレジストリは Docker Hub で、これは Docker が提供するパブリックレジストリです。 |
Docker コンテナをデタッチドモード(-d
フラグを使用)で実行すると、コンテナはバックグラウンドで実行され、その出力に直接アクセスすることはできません。ただし、Docker CLI を使用すると、デタッチドコンテナのログを引き続き表示できます。
デタッチドコンテナのログを表示するには、docker logs
コマンドを使用できます。基本的な構文は次のとおりです。
docker logs [container_name or container_id]
たとえば、my-app
という名前のデタッチドコンテナがあるとします。
docker run -d --name my-app nginx
次のコマンドを使用して、このコンテナのログを表示できます。
docker logs my-app
これにより、ターミナルに my-app
コンテナのログが表示されます。
デタッチドコンテナのログをリアルタイムで表示したい場合は、docker logs
コマンドに -f
(フォロー)フラグを使用できます。
docker logs -f my-app
これにより、ターミナルにログ出力が開かれたままになり、コンテナによって新しいログエントリが生成されるたびに継続的に表示されます。
時間または特定のログレベルでログをフィルタリングすることもできます。たとえば、最後の 10 件のログエントリを表示するには、次のようにします。
docker logs --tail 10 my-app
または、過去 5 分間のログを表示するには、次のようにします。
docker logs --since 5m my-app
--until
フラグを使用して、ログレベルでログをフィルタリングすることもできます。
docker logs --until 5m my-app
これにより、過去 5 分間のログが表示されます。
Docker はさまざまなロギングドライバをサポートしており、これらのドライバによってコンテナのログがどのように保存および管理されるかが決まります。デフォルトのロギングドライバは json-file
ですが、Docker デーモンまたは個々のコンテナに別のロギングドライバを設定することができます。これは、外部のログ管理システムと統合する場合に便利です。
基本的な docker logs
コマンドに加えて、Docker コンテナのログを管理および分析するために使用できるいくつかの実用的な手法があります。
デフォルトの json-file
ロギングドライバに依存する代わりに、Docker コンテナを設定して、ホストシステム上のファイルにログを記録することができます。これは、ログの長期保存と分析に役立ちます。
ファイルにログを記録するには、コンテナを起動する際に --log-driver
と --log-opt
フラグを使用できます。
docker run -d --name my-app --log-driver=local --log-opt=max-size=10m --log-opt=max-file=5 nginx
この例では、ログはホストシステム上のファイルに書き込まれ、最大ファイルサイズは 10MB、最大ログファイル数は 5 つになります。
Docker コンテナを設定して、Elasticsearch、Splunk、または Syslog などのリモートロギングシステムにログを送信することもできます。これは、ログの集中管理と分析に役立ちます。
リモートシステムにログを記録するには、コンテナを起動する際に --log-driver
と --log-opt
フラグを使用できます。
docker run -d --name my-app --log-driver=syslog --log-opt=syslog-address=tcp://192.168.1.100:514 nginx
この例では、ログは IP アドレス 192.168.1.100
のポート 514
にある Syslog サーバーに送信されます。
Docker ログをより効果的に管理および分析するのに役立ついくつかのサードパーティ製のユーティリティがあります。人気のあるオプションには以下のようなものがあります。
これらのツールは、ログのフィルタリング、アラート、および視覚化などの追加機能を提供し、Docker コンテナのログをよりよく理解および管理するのに役立ちます。
この包括的なガイドでは、デタッチド Docker コンテナのログを表示する方法を学び、実用的なロギング手法を探求し、Docker ベースのアプリケーションを効果的に管理および監視するために必要なスキルを習得します。このチュートリアルの終わりまでに、Docker ロギングについてしっかりと理解し、さまざまなロギングシナリオを自信を持って処理できるようになります。