はじめに
この実験では、Docker コンテナに関する詳細情報を表示するdocker inspectコマンドの使用方法を学びます。実行中および停止中のコンテナを検査する方法、デフォルトの JSON 出力形式を理解し、Go テンプレートを使用して出力をフォーマットしカスタマイズされたビューを作成する方法を探求します。さらに、docker inspectコマンドを使用してコンテナのサイズ情報を表示する方法も学びます。
実践的な演習を通じて、docker inspectを使用して Docker 環境のトラブルシューティングや管理に不可欠な、貴重な設定情報、状態、ネットワーク詳細を取得する実用的な経験を得ることができます。
実行中のコンテナを調査する
このステップでは、実行中の Docker コンテナを検査する方法を学びます。docker inspectコマンドは、コンテナの設定、ネットワーク設定、状態などに関する詳細情報を提供します。
まず、実行状態を維持するシンプルなコンテナを起動しましょう。ubuntuイメージを使用し、コンテナを継続的に実行させるコマンドを実行します。
docker run -d --name my-running-container ubuntu sleep infinity
上記のコマンドの説明:
docker run: 新しいコンテナを実行するためのコマンド-d: コンテナをバックグラウンドで実行するためのフラグ(デタッチドモード)--name my-running-container: コンテナに名前を割り当て、参照しやすくしますubuntu: 使用するイメージ。ローカルに存在しない場合、Docker が自動的に取得しますsleep infinity: コンテナ内で実行され、コンテナを無期限に実行状態に保つコマンド
コンテナが実行されたら、検査できます。コンテナ名を指定してdocker inspectコマンドを実行します。
docker inspect my-running-container
このコマンドは、my-running-containerに関するすべての詳細を含む大規模な JSON オブジェクトを出力します。Id、State、Config、NetworkSettingsなどのさまざまなセクションを確認できます。
出力を読みやすくしたり、特定の情報を抽出したりするには、jq(軽量で柔軟なコマンドライン JSON プロセッサ)などのツールにパイプできます。ただし、この実験では基本的なdocker inspectコマンドに焦点を当てます。
コンテナの検査が終わったら、環境をクリーンアップするために停止して削除できます。
docker stop my-running-container
docker rm my-running-container
docker stop my-running-container: 実行中のコンテナを停止するコマンドdocker rm my-running-container: 停止したコンテナを削除するコマンド
停止済みコンテナの調査
このステップでは、現在実行されていないコンテナも検査できることを学びます。docker inspectコマンドは実行中および停止中のコンテナの両方で動作し、それらの設定や最終状態にアクセスできます。
まず、短時間で終了するシンプルなコンテナを実行しましょう。
docker run --name my-stopped-container ubuntu sleep 5
このコマンドの説明:
docker run: 新しいコンテナを実行--name my-stopped-container: コンテナに名前を割り当てubuntu: 使用するイメージsleep 5: コンテナ内で実行されるコマンドで、5 秒後に終了します
sleep 5コマンドが実行されコンテナが停止するまで数秒待ちます。docker ps -aを使用してすべてのコンテナ(停止中のものも含む)をリスト表示することで、コンテナが停止したことを確認できます。
docker ps -a
リストにmy-stopped-containerが表示され、終了 (exited) 状態であることがわかります。
前のステップで実行中のコンテナに行ったのと同様に、docker inspectコマンドを使用して停止済みコンテナを検査できます。
docker inspect my-stopped-container
再び詳細な JSON 出力が表示されます。Stateセクションには、コンテナの終了ステータスや終了時刻に関する情報が表示されていることに注目してください。
停止済みコンテナの検査は、デバッグやコンテナが終了した理由を理解するのに役立ちます。
最後に、停止済みコンテナをクリーンアップします。
docker rm my-stopped-container
JSON 形式での inspect 出力フォーマット
このステップでは、docker inspectコマンドの出力を JSON 配列としてフォーマットする方法を学びます。これは複数のオブジェクト(コンテナやイメージなど)を同時に検査する際に特に有用で、他のツールやスクリプトで簡単に解析可能な構造化された出力を提供します。
まず、実行状態を維持する 2 つのシンプルなコンテナを起動しましょう。
docker run -d --name container1 ubuntu sleep infinity
docker run -d --name container2 ubuntu sleep infinity
次に、両方のコンテナを検査し、出力を JSON 配列としてフォーマットします。docker inspectコマンドに複数のコンテナ名を指定することで実現できます。
docker inspect container1 container2
出力は、container1とcontainer2の両方の検査詳細を含む単一の JSON 配列になります。配列の各要素は、個々のコンテナに対応する JSON オブジェクトです。
このフォーマットは、複数のオブジェクトを検査する際のデフォルト形式です。構造化データのリストを表現する標準的な方法です。
検査が終わったら、コンテナを停止して削除します。
docker stop container1 container2
docker rm container1 container2
Go テンプレートを使用した inspect 出力のフォーマット
このステップでは、Go テンプレートを使用してdocker inspectコマンドの出力をフォーマットする方法を学びます。これにより、詳細な JSON 出力から特定の情報を抽出し、カスタム形式で表示することが可能になります。
まず、実行状態を維持するコンテナを起動しましょう。
docker run -d --name my-templated-container ubuntu sleep infinity
次に、このコンテナを検査し、Go テンプレートを使用して IP アドレスのみを表示します。IP アドレスは検査出力のNetworkSettings.IPAddressフィールドに含まれています。
docker inspect --format '{{.NetworkSettings.IPAddress}}' my-templated-container
このコマンドの説明:
--format '{{.NetworkSettings.IPAddress}}': Go テンプレートを使用したフォーマットを指定{{...}}: Go テンプレートのアクションを示す.: 検査対象のルートオブジェクト(コンテナ)を表すNetworkSettings: ルートオブジェクト内のNetworkSettingsフィールドにアクセスIPAddress:NetworkSettingsオブジェクト内のIPAddressフィールドにアクセス
このコマンドの出力は、コンテナの IP アドレスのみになります。
Go テンプレートを使用して様々な情報を抽出できます。例えば、コンテナ名と ID を取得するには:
docker inspect --format 'Name: {{.Name}}, ID: {{.Id}}' my-templated-container
この場合、Name: /my-templated-container, ID: <container_id>のような出力が得られます。
Go テンプレートは、条件文、ループ、関数など強力なフォーマット機能を提供しますが、この基本的な例では単純にフィールドにアクセスしています。
検査が終わったら、コンテナを停止して削除します。
docker stop my-templated-container
docker rm my-templated-container
コンテナサイズ情報の表示
このステップでは、Docker コンテナのサイズ情報を表示する方法を学びます。これはディスク使用量の監視やコンテナの容量把握に役立ちます。
デフォルトでは、docker psコマンドはコンテナのサイズを表示しません。サイズ情報を含めるには、--sizeまたは-sフラグを使用します。
まず、シンプルなコンテナを実行しましょう。
docker run -d --name my-size-container ubuntu sleep infinity
次に、実行中のコンテナをリスト表示し、サイズ情報を含めます。
docker ps --size
または
docker ps -s
出力にはSIZEという追加の列が表示されます。この列には 2 つの値が表示されます:
- コンテナの書き込み可能レイヤーのサイズ(コンテナ作成後にファイルシステムに加えられた変更)
- イメージレイヤーと書き込み可能レイヤーを含むコンテナの総サイズ
書き込み可能レイヤーのサイズは、多くのデータを書き込まない単純なコンテナでは通常小さいです。総サイズはベースイメージのサイズを含むためより大きくなります。
停止中のコンテナも含めてすべてのコンテナをリスト表示する際にも、docker ps -a --sizeでサイズ情報を確認できます。
docker ps -a --size
これは終了したがまだ削除されていないコンテナのサイズを確認するのに便利です。
コンテナサイズを理解することは、Docker ホストのディスクスペース管理において重要です。
最後に、コンテナを停止して削除します。
docker stop my-size-container
docker rm my-size-container
まとめ
この実験では、Docker コンテナの詳細情報を表示するdocker inspectコマンドの使用方法を学びました。実行中および停止中のコンテナを調査する実践を通じて、このコマンドがコンテナの状態に関係なく包括的なデータを提供することを理解しました。
さらに、docker inspectの出力をフォーマットする方法を探求しました。具体的には、完全な詳細を JSON 形式で出力する方法と、Go テンプレートを使用して特定の情報を抽出・表示する方法を学びました。最後に、--sizeフラグを使用して検査出力にコンテナサイズ情報を含める方法を習得しました。



