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/16
と 172.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 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