docker network connect
内容説明 | コンテナーをネットワークに接続します。 |
---|---|
利用方法 | docker network connect [OPTIONS] NETWORK CONTAINER |
内容説明
コンテナーをネットワークに接続します。 接続にあたってはコンテナーの名前または ID を指定することができます。 接続が行われると、同一ネットワーク内であれば他のコンテナーと互いに通信することができます。
オプション
オプション | デフォルト | 内容説明 |
---|---|---|
--alias | コンテナーに対してネットワーク限定のエイリアスを追加します。 | |
--driver-opt | ネットワークドライバーのオプション。 | |
--ip | IPv4 アドレスを指定します。(たとえば 172.30.100.104 など) | |
--ip6 | IPv6 アドレスを指定します。(たとえば 2001:db8::33 など) | |
--link | 別コンテナーへのリンクを追加します。 | |
--link-local-ip | コンテナーに対してリンクローカルアドレスを追加します。 |
利用例
実行中コンテナーのネットワークへの接続
$ docker network connect multi-host-network container1
コンテナー起動時のネットワークへの接続
docker run --network=<network-name>
のようにオプションをつけてコンテナーを起動すれば、起動直後にネットワークに接続することもできます。
$ docker run -itd --network=multi-host-network busybox
ネットワーク内で利用する IP アドレスの指定 (--ip)
コンテナーのインターフェースに割り振りたい IP アドレスを指定することができます。
$ docker network connect --ip 10.10.36.122 multi-host-network container2
かつての --link
オプションの利用 (--link)
--link
オプションを使って、エイリアスを指定して別のコンテナーをリンクすることができます。
$ docker network connect --link container1:c1 multi-host-network container2
コンテナーに対するネットワークエイリアスの生成 (--alias)
--alias
オプションは、コンテナーがネットワークに接続する際に、別名による接続を可能とするものです。
$ docker network connect --alias db --alias mysql multi-host-network container2
コンテナーのインターフェースへの sysctl 設定 (--driver-opt)
各インターフェースに対しては --driver-opt
のラベル com.docker.network.endpoint.sysctls
を用いることで、net.ipv4.
や net.ipv6.
によってはじまる sysctl
を設定することができます。
インタフェース名は IFNAME
と書く必要があります。
インターフェースとして複数の sysctl
を設定する場合は driver-opt
の全項目をクォートでくくります。
その場合にクォートはエスケープすることが必要になります。
たとえばインターフェース my-net
に対して eth3
という名前が与えられているとした場合、以下の例は net.ipv4.conf.eth3.log_martians=1
、net.ipv4.conf.eth3.forwarding=0
を設定するものとなります。
$ docker network connect --driver-opt=\"com.docker.network.endpoint.sysctls=net.ipv4.conf.IFNAME.log_martians=1,net.ipv4.conf.IFNAME.forwarding=0\" multi-host-network container2
メモ
ネットワークドライバーによっては sysctl 設定の変更を制限している場合があります。 さらにネットワーク操作を禁止するような新たな制限が将来加えられるかもしれません。
コンテナーの停止、一時停止、再起動に伴うネットワークへの影響
ネットワークに接続しているコンテナーの一時停止、再起動、停止を行うことができます。 コンテナーの起動時には、設定されているネットワークへの接続を行います。
コンテナーに IP アドレスが指定されている場合、停止コンテナーが再起動する際には、IP アドレスが再割り当てされます。
その IP アドレスが利用できない場合、コンテナーは起動に失敗します。
IP アドレスの取得を確実にするために、ネットワーク生成時に --ip-range
を指定する方法があります。
そしてコンテナーの IP アドレスには、そこで指定した IP アドレスの範囲外にある固定 IP アドレスを選ぶようにします。
こうすれば、コンテナーがネットワークに接続していない間に、その IP アドレスが他のコンテナーによって利用されることがなくなります。
$ docker network create --subnet 172.20.0.0/16 --ip-range 172.20.240.0/20 multi-host-network
$ docker network connect --ip 172.20.128.2 multi-host-network container2
コンテナーに接続できることを確認するには docker network inspect
コマンドを使います。
docker network disconnect
を実行すれば、ネットワークからコンテナーを削除できます。
ネットワークに接続されると、コンテナー間のやりとりは、コンテナーの IP アドレスまたはコンテナー名を使って行われます。
overlay
ネットワークやカスタムプラグインを使ったマルチホスト接続に対応している場合、コンテナーがマルチホスト対応ネットワークに接続し、かつ異なる Engine から起動されたものであっても、そのようなやりとりを通じてコンテナー間の通信が可能です。
1 つのコンテナーは複数のネットワークに接続することができます。 その場合のネットワークは同一タイプである必要はありません。 たとえば 1 つのコンテナーを、bridge と overlay のネットワークに接続することができます。