Dockerネットワーク
· 8分の読み時間
概要
Dockerコンテナは隔離された環境で実行されるため、デフォルトでは互いに通信できません。しかし、複数のコンテナを1つのDockerネットワークに接続することで、相互に通信が可能になります。この記事では、異なるコンテナ間の通信を実現するためのネットワーク設定方法について探ります。
ネットワークの種類
Dockerネットワークは、目的に応じてbridge
、host
、overlay
などのさまざまなネットワークドライバーをサポートしています。
bridge
: 単一ホスト内の複数のコンテナ間で通信を可能にします。host
: コンテナをホストコンピュータと同じネットワークで実行するために使用されます。overlay
: 複数のホスト上で実行されるコンテナ間のネットワーキングに使用されます。
ネットワークの作成
docker network create
コマンドを使用して、新しいDockerネットワークを作成しましょう。
docker network create my-net
新しく追加されたネットワークは、docker network ls
コマンドを使用して確認できます。-d
オプションを指定しなかったため、デフォルトのbridge
ネットワークとして作成されたことが確認できます。
ネットワークの詳細
docker network inspect
コマンドを使用して、新しく追加されたネットワークの詳細を確認しましょう。
docker network inspect my-net
[
{
"Name": "my-net",
"Id": "05f28107caa4fc699ea71c07a0cb7a17f6be8ee65f6001ed549da137e555b648",
"Created": "2022-08-02T09:05:20.250288712Z",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": {},
"Config": [
{
"Subnet": "172.18.0.0/16",
"Gateway": "172.18.0.1"
}
]
},
"Internal": false,
"Attachable": false,
"Ingress": false,
"ConfigFrom": {
"Network": ""
},
"ConfigOnly": false,
"Containers": {},
"Options": {},
"Labels": {}
}
]
Containers
セクションを確認すると、このネットワークに接続されているコンテナがないことがわかります。
コンテナをネットワークに接続する
まず、one
という名前のコンテナを実行しましょう。
docker run -it -d --name one busybox
# af588368c67b8a273cf63a330ee5191838f261de1f3e455de39352e0e95deac4
コンテナを実行する際に--network
オプションを指定しない場合、デフォルトでbridge
ネットワークに接続されます。
情報
busybox
は、テスト目的に最適な軽量のコマンドラインライブラリであり、Dockerが公式に提供しています。
docker network inspect bridge
#...
"Containers": {
"af588368c67b8a273cf63a330ee5191838f261de1f3e455de39352e0e95deac4": {
"Name": "one",
"EndpointID": "44a4a022cc0f5fb30e53f0499306db836fe64da15631f2abf68ebc74754d9750",
"MacAddress": "02:42:ac:11:00:02",
"IPv4Address": "172.17.0.2/16",
"IPv6Address": ""
}
},
#...
]