docker network connect

内容説明コンテナーをネットワークに接続します。
利用方法docker network connect [OPTIONS] NETWORK CONTAINER

内容説明

コンテナーをネットワークに接続します。 接続にあたってはコンテナーの名前または ID を指定することができます。 接続が行われると、同一ネットワーク内であれば他のコンテナーと互いに通信することができます。

オプション

オプションデフォルト内容説明
--aliasコンテナーに対してネットワーク限定のエイリアスを追加します。
--driver-optネットワークドライバーのオプション。
--ipIPv4 アドレスを指定します。(たとえば 172.30.100.104 など)
--ip6IPv6 アドレスを指定します。(たとえば 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 オプションを使って、エイリアスを指定して別のコンテナーをリンクすることができます。

$ 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=1net.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 のネットワークに接続することができます。