Dockerを使用してアプリケーションを実行する際、重要なことの一つはコンテナログを確認する方法です。このログは、アプリケーションが正常に動作しているか、エラーがないか、コンテナ内のサービスが正常に起動しているかを確認するのに非常に役立ちます。
この例では、特定のコンテナ名は使用しません。そのため、一般的な形式を使用します:
nama-container
または、よりわかりやすくするために、自分のコンテナ名を次のように考えてください:
nama-proyek
あとは、nama-proyek を実際のDockerコンテナ名に置き換えてください。
実行中のコンテナ名を確認するには、次のコマンドを使用します:
docker ps
NAMES の部分を確認してください。それが docker logs コマンドに使用できるコンテナ名です。
1. コンテナログを表示する
コンテナのログを表示するには、次のコマンドを使用します:
docker logs nama-proyek
nama-proyek を自分のコンテナ名に置き換えてください。
一般的な形式の例:
docker logs nama-container
このコマンドは、そのコンテナから記録されたログを表示します。通常、このログには、アプリケーションの起動プロセス、エラー、警告、またはサーバーがアクティブになったことを示すメッセージなどの情報が含まれます。
2. ログをリアルタイムで表示する
ログをリアルタイムまたは継続的に表示したい場合は、-f オプションを追加します。
docker logs -f nama-proyek
-f オプションはフォローを意味します。つまり、コンテナが実行されている限り、端末は最新のログを表示し続けます。
これはデバッグ中に非常に便利です。たとえば、コンテナの再起動後、アプリケーションの更新後、またはWebサイトにアクセスしたときに新しいエラーがないか確認する場合などです。
ライブログモードを終了するには、次のキーを押します:
CTRL + C
これは端末でのログ表示を停止するだけで、コンテナ自体は停止しません。
3. 最新のログのみを表示する
コンテナのログが長すぎる場合があります。特にアプリケーションが長時間実行されている場合です。最新の数行だけを表示したい場合は、--tail を使用します。
docker logs --tail=100 nama-proyek
上記のコマンドは、コンテナログの最後の100行を表示します。
最後の50行を表示する場合:
docker logs --tail=50 nama-proyek
最新のログを表示しつつ、新しいログも追跡したい場合は、--tail と -f を組み合わせることができます。
docker logs --tail=100 -f nama-proyek
このコマンドにより、Dockerは最後の100行を表示し、その後新しいログをライブで表示し続けます。
4. 時間に基づいてログを表示する
Dockerは特定の時間に基づいてログを表示することもできます。たとえば、過去10分間のログだけを表示する場合:
docker logs --since=10m nama-proyek
または過去1時間:
docker logs --since=1h nama-proyek
特定の時間までのログを表示するには、以下を使用します:
docker logs --until=10m nama-proyek
この機能は、最初からログをすべて読むことなく、最近発生したエラーに焦点を当てたい場合に便利です。
5. コンテナに入る
外部からログを表示するだけでなく、ファイルやフォルダを確認したり、特定のコマンドを実行したりするためにコンテナの中に入る必要がある場合もあります。
次のコマンドを使用します:
docker exec -it nama-proyek sh
通常、軽量なLinuxベースのコンテナは sh を使用します。
Dockerイメージが bash をサポートしている場合は、次のコマンドも使用できます:
docker exec -it nama-proyek bash
コンテナ内に入ったら、現在のフォルダの場所を確認できます:
pwd
次に、ファイルとフォルダのリストを表示します:
ls
より詳細に表示する場合:
ls -la
6. コンテナ内からアプリケーションを確認する
コンテナ内に入ったら、アプリケーションが使用するポートのローカルホストにアクセスして、アプリケーションが実行されているかどうかを確認できます。
一般的な形式は次のとおりです:
wget -qO- http://localhost:PORT
PORT をコンテナ内のアプリケーションが使用する内部ポートに置き換えてください。
例:
wget -qO- http://localhost:8080
または、コンテナ内で curl が利用可能な場合は、次のコマンドも使用できます:
curl http://localhost:PORT
例:
curl http://localhost:8080
アプリケーションが正常に動作している場合、通常はHTML、JSON、またはアプリケーションからの特定のテキストなどの応答が表示されます。
7. VPSまたはホストからアプリケーションを確認する
コンテナ内からだけでなく、VPSまたはホストサーバーから直接アプリケーションを確認することもできます。
一般的な形式:
curl http://localhost:PORT
PORT をVPSで開かれているポート、またはDockerのポートマッピングに置き換えてください。
例:
curl http://localhost:8080
Dockerを使用する場合、コンテナのポートがホストのポートにマッピングされていることを確認してください。次のコマンドで確認できます:
docker ps
PORTS の部分に次のように表示されます。例:
0.0.0.0:8080->8080/tcp
これは、VPSのポート 8080 がコンテナ内のポート 8080 に転送されることを意味します。
8. コンテナ名を確認する
コンテナ名がわからない場合は、次のコマンドを実行します:
docker ps
このコマンドは実行中のコンテナのリストを表示します。
停止したものを含むすべてのコンテナを表示する場合:
docker ps -a
NAMES の部分を確認し、その名前を docker logs コマンドに使用します。
例:
docker logs nama-container
9. 簡単なデバッグの流れの例
通常、Dockerアプリケーションに問題がある場合、まずコンテナを確認することから始めます。
まず、コンテナが実行中かどうかを確認します:
docker ps
次に、最新のログを確認します:
docker logs --tail=100 nama-proyek
リアルタイムで監視したい場合:
docker logs -f nama-proyek
コンテナに入る必要がある場合:
docker exec -it nama-proyek sh
その後、アプリケーションフォルダを確認します:
pwd
ls -la
次に、内部ポートでアプリケーションが応答するかどうかを確認します:
wget -qO- http://localhost:PORT
または:
curl http://localhost:PORT
まとめ
Dockerコンテナのログを表示するための最も基本的なコマンドは次のとおりです:
docker logs nama-proyek
ログをライブで表示する場合:
docker logs -f nama-proyek
ログの最後の部分だけを表示する場合:
docker logs --tail=100 nama-proyek
そして、コンテナに入る必要がある場合:
docker exec -it nama-proyek sh
これらの簡単なコマンドを使用すれば、Docker上のアプリケーションの状態を確認し、エラーを探し、実行中のプロセスを確認し、コンテナ内のサービスが正常に動作していることを確認できます。
著者
Wilan
バリ・アイランド・テクノの常駐寄稿者であり、テクノロジー、プログラミング、ソフトウェアエンジニアリングの世界に関する知識を積極的に共有しています。