3.5. コンテナー内のアプリケーションのデバッグ
トラブルシューティングのさまざまな側面に合わせてカスタマイズされたさまざまなコマンドラインツールを使用できます。以下に、一般的なコマンドラインツールとともにカテゴリーを示します。
これはコマンドラインツールの完全なリストではありません。コンテナーアプリケーションをデバッグするためのツールの選択は、コンテナーイメージとユースケースに大きく依存します。
たとえば、systemctl、journalctl、ip、netstat、ping、traceroute、perf、iostat ツールは、ネットワーク、systemd サービス、ハードウェアパフォーマンスカウンターなどのシステムレベルのリソースと対話するため、ルートアクセスが必要になる場合があります。これらのリソースは、セキュリティー上の理由から、ルートレスコンテナーでは制限されています。
ルートレスコンテナーは昇格された権限を必要とせずに動作し、ユーザー名前空間内で非ルートユーザーとして実行されるため、セキュリティーが向上し、ホストシステムから分離されます。ホストとのやり取りが制限され、攻撃対象領域が縮小され、権限昇格の脆弱性のリスクが軽減されるため、セキュリティーが強化されます。
ルートフルコンテナーは、通常はルートユーザーとして昇格された権限で実行され、システムリソースと機能への完全なアクセス権が付与されます。ルートフルコンテナーは柔軟性と制御性に優れていますが、権限昇格の可能性があり、ホストシステムが脆弱性にさらされる可能性があるため、セキュリティーリスクが生じます。
ルートフルコンテナーとルートレスコンテナーの詳細は、podman RHEL システムロールを使用したバインドマウントによるルートレスコンテナーの作成 および ルートレスコンテナーに関する特別な考慮事項 を参照してください。
- Systemd とプロセス管理ツール
-
systemctl: コンテナー内の systemd サービスを制御し、起動、停止、有効化、無効化の操作を可能にします。journalctl: systemd サービスによって生成されたログを表示し、コンテナーの問題のトラブルシューティングに役立ちます。 - ネットワークツール
-
ip: コンテナー内のネットワークインターフェイス、ルーティング、およびアドレスを管理します。netstat: ネットワーク接続、ルーティングテーブル、およびインターフェイスの統計情報を表示します。ping: コンテナーまたはホスト間のネットワーク接続を検証します。traceroute: パケットが宛先に到達するまでのパスを特定します。ネットワークの問題の診断に役立ちます。 - プロセスおよびパフォーマンスツール
-
ps: コンテナー内で現在実行中のプロセスをリスト表示します。top: コンテナー内のプロセスによるリソース使用状況に関するリアルタイムの分析情報を提供します。htop: リソース使用率を監視するためのインタラクティブなプロセスビューアー。perf: CPU パフォーマンスのプロファイリング、トレース、および監視により、システムまたはアプリケーション内のパフォーマンスのボトルネックを正確に特定できます。vmstat: コンテナー内の仮想メモリーの統計情報を報告し、パフォーマンス分析に役立ちます。iostat: コンテナー内のブロックデバイスの入出力統計情報を監視します。gdb(GNU Debugger): ユーザーが実行を追跡および制御し、変数を検査し、実行時にメモリーとレジスターを分析できるようにすることで、プログラムの調査とデバッグを支援するコマンドラインデバッガー。詳細は、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: コンテナーに障害が発生した場合、何が起こったのかを知ることは基本的に不可能です。コンテナーからファイルシステム構造をエクスポートすると、マウントされたボリュームに存在しない可能性のある他のログファイルを確認できるようになります。