Docker コンテナの IP アドレスを取得する

Isaac Tony 2023年1月30日
  1. ブリッジネットワークに接続し、Docker コンテナの IP アドレスを取得する
  2. docker inspect を使用して Docker コンテナの IP アドレスを取得する
Docker コンテナの IP アドレスを取得する

このチュートリアルでは、Docker コンテナの IP アドレスの IP アドレスを取得する方法を示します。

ブリッジネットワークに接続し、Docker コンテナの IP アドレスを取得する

Docker コンテナーが非常に便利である重要な理由の 1つは、それらを簡単に接続できることです。これにより、コンテナは通信し、リソースを簡単に共有できます。

コンテナを Docker ワークロードなしに接続することもできます。

この記事は Docker ネットワーキングに関するものではありません。したがって、Docker ネットワーキングの詳細については詳しく説明しません。ただし、docker には、Bridge ドライバーを使用してネットワークをプラグイン可能にするさまざまなドライバーが用意されています。

Docker を使用すると、ブリッジドライバーと呼ばれるデフォルトのドライバーを使用してネットワークを作成できます。ただし、ブリッジネットワークはプライベートであり、ホスト上のコンテナに限定されたスコープがあります。

ホスト上のデフォルトのネットワークと以前に使用していたネットワークを表示できます。すべての Docker インストールには、通常、以下に示す 3つのデフォルトネットワークが含まれています。

isaac@DESKTOP-HV44HT6:~$ docker network ls
NETWORK ID     NAME      DRIVER    SCOPE
9729860fa596   bridge    bridge    local
0667c3f7d0f0   host      host      local
c3273b158256   none      null      local

特に指定がない限り、Docker は常にブリッジネットワークで新しいコンテナを起動します。

コンテナの IP アドレスは、ネットワーク Docker コンテナの重要な部分です。通常、コンテナには、接続するすべてのネットワークの IP アドレスが割り当てられます。

一方、以下のコマンドを使用して、Docker コンテナをブリッジネットワークに手動で接続することもできます。

$ docker run -dt rabbitmq

これにより、Docker コンテナが作成され、ブリッジネットワークに割り当てられます。ネットワークを検査してネットワークに接続されていることを確認する前に、まずコンテナが実行されていることを確認する必要があります。

$ docker ps
CONTAINER ID   IMAGE      COMMAND                  CREATED              STATUS              PORTS                                                 NAMES
42487cad0390   rabbitmq   "docker-entrypoint.s…"   About a minute ago   Up About a minute   4369/tcp, 5671-5672/tcp, 15691-15692/tcp, 25672/tcp   compassionate_keller

ブリッジネットワークを検査すると、ネットワークに接続されているコンテナを、コンテナの IP アドレスやコンテナのデフォルトのサブネットなどの詳細とともに表示できます。以下に示すように、詳細は JSON 形式で返されます。

~$ docker network inspect bridge

出力:

"ConfigOnly": false,
        "Containers": {
            "42487cad0390a8de6d1a88bc1d6c09ffdf3162dc85d4d5d3dc70200b2348b673": {
                "Name": "compassionate_keller",
                "EndpointID": "ffa55232565d3a32d1e471d0753c1f491d6131a5cca50b8b76bc43a8ff554e32",
                "MacAddress": "02:42:ac:11:00:04",
                "IPv4Address": "172.17.0.4/16",
                "IPv6Address": ""
            }

上記の例のコンテナの IP アドレスは 172.17.0.4/16 です。

また、ネットワークに複数のコンテナを接続することもでき、ブリッジネットワークを調べることで両方の IP アドレスを簡単に見つけることができます。以下に示すように、Nginx イメージに基づくコンテナをブリッジネットワークに追加します。

isaac@DESKTOP-HV44HT6:~$ docker run -dt nginx
4ab752ab92582a0eb2cb14475094460fc8cc608c93a357a8dca082cfea2bc368

これで、ブリッジネットワークを調べると、2つのコンテナの IP アドレスを取得できるようになります。2つのコンテナが実行されている必要があることに注意してください。

isaac@DESKTOP-HV44HT6:~$ docker network inspect bridge

出力:

"Containers": {
            "42487cad0390a8de6d1a88bc1d6c09ffdf3162dc85d4d5d3dc70200b2348b673": {
                "Name": "compassionate_keller",
                "EndpointID": "ffa55232565d3a32d1e471d0753c1f491d6131a5cca50b8b76bc43a8ff554e32",
                "MacAddress": "02:42:ac:11:00:04",
                "IPv4Address": "172.17.0.4/16",
                "IPv6Address": ""
            },
            "4ab752ab92582a0eb2cb14475094460fc8cc608c93a357a8dca082cfea2bc368": {
                "Name": "trusting_keller",
                "EndpointID": "a2babd11586f493cf5e57f5d9920a7f5648cf6163e77030521bef62fc9f34a63",
                "MacAddress": "02:42:ac:11:00:02",
                "IPv4Address": "172.17.0.2/16",
                "IPv6Address": ""
            }
        }

2つのコンテナの IP アドレスは、作成順に 172.17.0.4/16172.17.0.2/16 です。

docker inspect を使用して Docker コンテナの IP アドレスを取得する

docker inspect とコンテナーの名前またはコンテナーID を使用して、特定の Docker コンテナーの IP アドレスを検索することもできます。これにより、他の多くの詳細が JSON 形式で同様に返されます。

$ docker inspect 42487cad0390

出力:

"Networks": {
                "bridge": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": null,
                    "NetworkID": "9729860fa5961eeac55f921ee787b2c82a15146cd36117b5394243be2149e929",
                    "EndpointID": "ffa55232565d3a32d1e471d0753c1f491d6131a5cca50b8b76bc43a8ff554e32",
                    "Gateway": "172.17.0.1",
                    "IPAddress": "172.17.0.4",
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "02:42:ac:11:00:04",
                    "DriverOpts": null
                }
            }

この場合、公式の Nginx イメージに基づいてコンテナを検査しました。Docker コンテナーのネットワーキングに関する楽しいことについては、Docker のドキュメントを参照してください。

著者: Isaac Tony
Isaac Tony avatar Isaac Tony avatar

Isaac Tony is a professional software developer and technical writer fascinated by Tech and productivity. He helps large technical organizations communicate their message clearly through writing.

LinkedIn

関連記事 - Docker Container