実行中のコンテナのデバッグ
docker exec、docker logs、docker inspect、docker statsを使用してDockerコンテナをデバッグする方法を学びます。実行中のコンテナを効果的にトラブルシューティングしましょう。
Container Lifecycle
詳細な説明
必須のデバッグコマンド
コンテナが正常に動作しない場合、Dockerはコンテナを停止せずに調査するためのコマンドを提供します。
docker execでシェルを開く
最も一般的なデバッグ手法は、実行中のコンテナ内でシェルを開くことです:
docker exec -it my-app /bin/sh
Alpine ベースのイメージではbashがインストールされていないため/bin/shを使用します。Debian/Ubuntuベースのイメージでは/bin/bashが使えます。
インタラクティブセッションなしで特定のコマンドを実行:
docker exec my-app cat /etc/nginx/nginx.conf
docker exec my-app env
docker exec my-app ls -la /app
docker logsでログを表示
-f(フォロー)でリアルタイムにログをストリーミング:
docker logs -f --tail 200 my-app
インシデント調査のための時間範囲フィルタリング:
docker logs --since "2024-01-15T10:00:00" --until "2024-01-15T11:00:00" my-app
コンテナの詳細を調査
docker inspectはコンテナに関する包括的なJSONを返します:
# IPアドレスを取得
docker inspect --format '{{.NetworkSettings.IPAddress}}' my-app
# 再起動回数を確認
docker inspect --format '{{.RestartCount}}' my-app
# 環境変数を表示
docker inspect --format '{{.Config.Env}}' my-app
リソース使用量のモニタリング
docker statsでリアルタイムのCPU、メモリ、I/Oを監視:
docker stats --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}\t{{.NetIO}}"
ユースケース
アプリケーションクラッシュの診断、高メモリ・CPU使用量の調査、コンテナ内の設定ファイルの確認、セキュリティレビュー中の環境変数の監査。