実行中のコンテナをネットワークに接続する
このステップでは、実行中の Docker コンテナを既存のネットワークに接続する方法を学びます。これは、すでに実行中のコンテナがあり、特定のネットワーク上の他のコンテナやサービスと通信させる必要がある場合に便利です。
まず、このデモンストレーションに使用する新しいネットワークを作成しましょう。my-network
という名前のブリッジネットワークを作成します。
docker network create my-network
ネットワークが正常に作成されたことを示す、以下のような出力が表示されるはずです。
<network_id>
次に、最初は my-network
に接続されていない単純なコンテナを実行しましょう。alpine
コンテナをデタッチドモード (-d
) で実行し、my-container
という名前を付けます。
docker run -d --name my-container alpine sleep infinity
出力はコンテナ ID になります。
<container_id>
コンテナが実行中で my-network
に接続されていないことを確認するには、コンテナのネットワーク設定を調べることができます。
docker inspect my-container --format '{{json .NetworkSettings.Networks}}'
出力にはデフォルトのブリッジネットワークが表示されますが、my-network
は表示されません。
{
"bridge": {
"IPAMData": null,
"IPAddress": "<ip_address>",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "<mac_address>",
"DriverOpts": null
}
}
次に、docker network connect
コマンドを使用して、実行中の my-container
を my-network
に接続しましょう。
docker network connect my-network my-container
コマンドが成功すると、出力は表示されません。
コンテナが my-network
に接続されたことを確認するには、再度コンテナのネットワーク設定を調べます。
docker inspect my-container --format '{{json .NetworkSettings.Networks}}'
今度は、出力にデフォルトのブリッジネットワークと my-network
の両方が表示されるはずです。
{
"bridge": {
"IPAMData": null,
"IPAddress": "<ip_address>",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "<mac_address>",
"DriverOpts": null
},
"my-network": {
"IPAMData": null,
"IPAddress": "<ip_address>",
"IPPrefixLen": 24,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "<mac_address>",
"DriverOpts": null
}
}
最後に、作成したコンテナとネットワークをクリーンアップしましょう。
docker stop my-container
docker rm my-container
docker network rm my-network