3.6. コンテナー内のアプリケーションのデバッグ
トラブルシューティングのさまざまな側面に合わせてカスタマイズされたさまざまなコマンドラインツールを使用できます。以下に、一般的なコマンドラインツールとともにカテゴリーを示します。
これはコマンドラインツールの完全なリストではありません。コンテナーアプリケーションをデバッグするためのツールの選択は、コンテナーイメージとユースケースに大きく依存します。
たとえば、systemctl
、journalctl
、ip
、netstat
、ping
、traceroute
、perf
、iostat
ツールは、ネットワーク、systemd サービス、ハードウェアパフォーマンスカウンターなどのシステムレベルのリソースと対話するため、ルートアクセスが必要になる場合があります。これらのリソースは、セキュリティー上の理由から、ルートレスコンテナーでは制限されています。
ルートレスコンテナーは昇格された権限を必要とせずに動作し、ユーザー名前空間内で非ルートユーザーとして実行されるため、セキュリティーが向上し、ホストシステムから分離されます。ホストとのやり取りが制限され、攻撃対象領域が縮小され、権限昇格の脆弱性のリスクが軽減されるため、セキュリティーが強化されます。
ルートフルコンテナーは、通常はルートユーザーとして昇格された権限で実行され、システムリソースと機能への完全なアクセス権が付与されます。ルートフルコンテナーは柔軟性と制御性に優れていますが、権限昇格の可能性があり、ホストシステムが脆弱性にさらされる可能性があるため、セキュリティーリスクが生じます。
ルートフルコンテナーとルートレスコンテナーの詳細は、ルートレスコンテナーの設定、ルートレスコンテナーへのアップグレード、および ルートレスコンテナーに関する特別な考慮事項 を参照してください。
Systemd とプロセス管理ツール
systemctl
- コンテナー内の systemd サービスを制御し、開始、停止、有効化、無効化の操作を可能にします。
journalctl
- systemd サービスによって生成されたログを表示し、コンテナーの問題のトラブルシューティングに役立ちます。
ネットワークツール
ip
- コンテナー内のネットワークインターフェイス、ルーティング、およびアドレスを管理します。
netstat
- ネットワーク接続、ルーティングテーブル、およびインターフェイス統計を表示します。
ping
- コンテナーまたはホスト間のネットワーク接続を検証します。
traceroute
- パケットが宛先に到達するまでのパスを識別します。ネットワークの問題の診断に役立ちます。
プロセスとパフォーマンスツール
ps
- コンテナー内で現在実行中のプロセスをリスト表示します。
top
- コンテナー内のプロセスによるリソース使用状況に関するリアルタイムの分析情報を提供します。
htop
- リソース使用率を監視するためのインタラクティブなプロセスビューアー。
perf
- CPU パフォーマンスのプロファイリング、トレース、およびモニタリングにより、システムまたはアプリケーション内のパフォーマンスのボトルネックを正確に特定できます。
vmstat
- コンテナー内の仮想メモリーの統計を報告し、パフォーマンス分析に役立ちます。
iostat
- コンテナー内のブロックデバイスの入出力統計を監視します。
gdb
(GNU デバッガー)- ユーザーが実行を追跡および制御し、変数を検査し、実行時にメモリーとレジスターを分析できるようにすることで、プログラムの調査とデバッグを支援するコマンドラインデバッガー。詳細は、Red Hat OpenShift コンテナー内のアプリケーションのデバッグの を参照してください。
strace
- プログラムによって行われたシステムコールを傍受して記録し、プログラムとオペレーティングシステム間のやり取りを明らかにすることでトラブルシューティングに役立ちます。
セキュリティーとアクセス制御ツール
sudo
- 昇格された権限でコマンドを実行できるようにします。
chroot
- コマンドのルートディレクトリーを変更します。異なるルートディレクトリー内でのテストやトラブルシューティングに役立ちます。
Podman 固有のツール
podman logs
- 実行時に 1 つ以上のコンテナーに存在するログをバッチで取得します。
podman inspect
- 名前または ID で識別されるコンテナーとイメージの低レベル情報を表示します。
podman events
-
Podman で発生するイベントを監視して出力します。各イベントには、タイムスタンプ、タイプ、ステータス、名前 (該当する場合)、およびイメージ (該当する場合) が含まれます。デフォルトのロギングメカニズムは
journald
です。 podman run --health-cmd
- ヘルスチェックを使用して、コンテナー内で実行されているプロセスの状態または準備ができているかどうかを判断できます。
podman top
- コンテナーの実行中のプロセスを表示します。
podman exec
- 実行中のコンテナー内でコマンドを実行したり、実行中のコンテナーにアタッチしたりすることは、コンテナー内で何が起こっているかをよりよく理解するのに非常に役立ちます。
podman export
- コンテナーに障害が発生すると、何が起こったのかを知ることは基本的に不可能です。コンテナーからファイルシステム構造をエクスポートすると、マウントされたボリュームに存在しない可能性のある他のログファイルを確認できるようになります。
関連情報
Red Hat OpenShift コンテナー内のアプリケーションのデバッグ
-
gdb
-
-
コアダンプ、
sosreport
、gdb
、ps
、core
。
-
コアダンプ、
-
Docker exec + env、
netstat
、kubectl
、etcdctl
、journalctl
、docker ログ
-
Docker exec + env、
-
ウォッチ、
podman logs
、systemctl
、podman exec
/kill
/restart
、podman insect
、podman top
、podman exec
、podman export
、paunch
-
ウォッチ、
外部リンク