実行中のコンテナのデバッグ

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使用量の調査、コンテナ内の設定ファイルの確認、セキュリティレビュー中の環境変数の監査。

試してみる — Docker CLI Reference

フルツールを開く