コンテナのトラブルシューティングにDockerログを表示する方法 - TechRepublic

コンテナのトラブルシューティングにDockerログを表示する方法 - TechRepublic

コンテナは、導入と管理が難しいソリューションになりがちです。このパズルには多くの要素が絡み合っているため、トラブルが発生した際にどこから手を付ければ良いのかさえ分からなくなることがよくあります。ホストの問題でしょうか?ネットワークの問題でしょうか?プロバイダーの問題でしょうか?あるいは、コンテナの不具合だけかもしれません。

ホスト、ネットワーク、またはプロバイダーに問題がないことがわかったら、問題の根本原因である可能性が高いもの、つまりコンテナー自体を確認します。

コンテナはIT業界の寵児となっていますが、完璧とは程遠いものです。問題が発生することも少なくありません。しかも、コンテナの複雑さゆえに、デプロイメントのまさに核心部分で問題が発生することも少なくありません。

参照: チェックリスト: サーバーインベントリ (TechRepublic Premium)

では、どうすればいいのでしょうか?単一のコンテナのトラブルシューティングはどうすればよいのでしょうか?幸いなことに、開発者はこの問題に配慮し、コンテナのログを確認できるコマンドを追加しました。この便利なツールの使い方を見てみましょう。

必要なもの

Dockerコンテナのログを表示するために必要なのは、マシンにDockerをデプロイすることだけです。Dockerをサポートしていれば、プラットフォームは問いません。今回はUbuntu Server 20.04でデモを行います。

この 1 つの要件を満たしたら、ログを表示してみましょう。

Docker logコマンドの使い方

コンテナログの表示方法を説明するために、NGINXコンテナをデプロイします。Dockerホストにログインし、以下のコマンドでNGINXコンテナをデプロイします。

docker run --name docker-nginx -p 8080:80 -d nginx

少し待つと、docker-nginx という名前の新しい NGINX コンテナが起動します。Web ブラウザを開き、http://SERVER:8080 (SERVER はホスティングサーバーの IP アドレス) にアクセスすると、NGINX のウェルカムページが表示されます。

しかし、ページが表示されない場合はどうすればいいでしょうか?コンテナが起動しないのはなぜでしょうか?原因を調べるには、次のコマンドを実行します。

docker logs docker-nginx

Docker は、保持しているすべてのログ ファイル情報を直ちに出力します (図 A )。

図A

新しくデプロイされた NGINX コンテナの Docker ログ。

もちろん、コンテナは正常に動作しているので、エラーはありません。それでも、出力内容を確認するには膨大な量です。ログファイルの最後の5行だけを表示したいとしましょう。そのためには、次のコマンドを実行します。

docker logs docker-nginx --tail 5

あるいは、コンテナがデータを送受信する際のトラブルシューティングを容易にするために、ログが書き込まれた時点でそれを表示したい場合もあるでしょう。その場合は、以下のオプションを使用します。

docker logs docker-nginx --follow

こうすると情報が出力され続けるので、書き込まれるログをリアルタイムで見ることができます (図 B )。

図B

実行中の docker-nginx コンテナの Docker ログ ファイルは次のとおりです。

過去1時間以内に何か問題が発生したことが判明しており、その時間内に書き込まれたログのみを表示したいとします。そのためには、次のコマンドを実行します。

docker logs docker-nginx --since=60m

あるいは、1時間前に何か問題が発生したことがわかっているかもしれません。次のコマンドで、until オプションを使用して、それ以前に書き込まれたすべてのログファイルを表示できます。

docker logs docker-nginx --until=60m

最後に、ログ出力にいくつかの詳細を追加したい場合があります。これは、–details オプションを使用して行います。

docker logs docker-nginx --details

これらのコマンドを実行することで、特定のDockerコンテナのトラブルシューティングに必要な情報がすべて揃います。注意すべき点は、コンテナ名の代わりにコンテナIDを使用できることです(上記のように使用しました)。関連するコンテナIDを確認するには、次のコマンドを実行します。

docker ps -a

コンテナ ID を使用して docker logs コマンドを実行する場合は、次のように ID の最初の 4 文字のみを使用する必要があります。

docker logs 118b --details

Docker コンテナのログを表示する方法はこれだけです。


イラスト:リサ・ホーナング/TechRepublic
Tagged: