network connect

Usage:  docker network connect [OPTIONS] NETWORK CONTAINER

Connects a container to a network

  --alias=[]         Add network-scoped alias for the container
  --help             Print usage
  --ip               IPv4 Address
  --ip6              IPv6 Address
  --link=[]          Add a link to another container

コンテナをネットワークに接続(connect)します。コンテナの接続はコンテナ名かコンテナ ID を使います。接続後は、同一ネットワーク上にある他のコンテナと通信可能になります。

$ docker network connect multi-host-network container1

あるいは、 docker run --net=<ネットワーク名> オプションを使うと、コンテナ起動時に、ただちにネットワークに接続します。

$ docker run -itd --net=multi-host-network busybox

コンテナのインターフェースに任意の 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 オプションを使うことで、ネットワークを接続したコンテナ間での名前解決に使う別名を指定できます。

$ docker network connect --alias db --alias mysql multi-host-network container2

コンテナを中断(pause)・再起動・停止しても、ネットワークに接続したままです。中断したコンテナはネットワークに接続しつづけており、 network inspect で確認できます。コンテナを停止(stop)すると、再起動するまではネットワーク上に表示されません。

停止しているコンテナを再起動するときに IP アドレスを指定できます。もしも IP アドレスが使えなければ、コンテナは起動に失敗します。IP アドレスを確実に割り当てるためには、ネットワーク作成時に --ip-range (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 ネットワークやカスタム・プラグインは複数のホスト間の接続性(multi-host connectivity)をサポートしています。コンテナは同じマルチホスト・ネットワーク上で接続できるだけではありません。異なったエンジンによって起動されていたとしても、同様に通信できます。

コンテナは複数のネットワークにも接続できます。ネットワークは同じ種類でなくても構いません。例えば、コンテナ・ブリッジとオーバレイ・ネットワークの両方に接続できます。