network create

Usage:  docker network create [OPTIONS] NETWORK-NAME

Creates a new network with a name specified by the user

--aux-address=map[]      Auxiliary ipv4 or ipv6 addresses used by network driver
-d --driver=DRIVER       Driver to manage the Network bridge or overlay. The default is bridge.
--gateway=[]             ipv4 or ipv6 Gateway for the master subnet
--help=false             Print usage
--ip-range=[]            Allocate container ip from a sub-range
--ipam-driver=default    IP Address Management Driver
-o --opt=map[]           Set custom network plugin options
--subnet=[]              Subnet in CIDR format that represents a network segment

新しいネットワークを作成します。 DRIVER には bridgeoverlay を指定できます。どちらも内蔵のネットワーク・ドライバです。サードパーティー製のドライバをインストールするか、カスタム・ネットワーク・ドライバを組み込むのであれば、同様に DRIVER で指定できます。 --driver オプションを指定しなければ、コマンドは自動的に bridge ネットワークを作成します。Docker エンジンをインストールすると、 bridge ネットワークを自動的に構築します。このネットワークは従来の docker0 ブリッジに相当します。新しいコンテナを docker run で起動すると、自動的にこのブリッジ・ネットワークに接続します。このデフォルト・ブリッジ・ネットワークは削除出来ませんが、新しいブリッジを network create コマンドで作成できます。

$ docker network create -d bridge my-bridge-network

ブリッジ・ネットワークは、単一の Docker エンジン上でネットワークを分離(isolate)します。ネットワークを作成するとき、 overlay (オーバレイ)ネットワークであれば、Docker エンジンが動作する複数のホスト上に渡ることも可能です。 bridge ネットワークとは異なり、オーバレイ・ネットワークを作成するには、いくつかの条件が必要です。

  • キーバリュー・ストアにアクセスできること。エンジンがサポートしているキーバリュー・ストアは Consul、Etcd、ZoopKeeper(分散ストア)です。
  • クラスタの各ホストが、キーバリュー・ストアと接続できること。
  • 各ホスト上の Docker エンジンの daemon が、クラスタとしての適切な設定をすること。

docker daemonoverlay ネットワークをサポートするために必要なオプションは、次の通りです。

  • --cluster-store
  • --cluster-store-opt
  • --cluster-advertise

各オプションや設定方法の詳細については、 マルチホスト・ネットワークを始めましょう をご覧ください。

もう1つの良いアイディアとしては、これらの設定を行わなくても、Docker Swarm でネットワークも管理できるクラスタを管理する事も出来ます。Swarm は知的なディスカバリとサーバ管理を提供しますので、実装にあたっての手助けとなるでしょう。

overlay ネットワークに必要な準備が整った後は、クラスタ上にあるホストのどれかで次のようなネットワーク作成コマンドを実行します。

$ docker network create -d overlay my-multihost-network

ネットワーク名はユニークにする必要があります。Docker デーモンは名前の衝突を避けようとしますが、保証されません。ユーザ・レポジトリも名前の衝突を避けようとします。

コンテナに接続

コンテナの起動時に --net フラグを指定すると、ネットワークに接続します。 busybox コンテナが mynet ネットワークに接続するには、次のようにします。

$ docker run -itd --net=mynet busybox

既に実行中のコンテナに対してネットワークを接続したい場合は、 docker network connect サブコマンドを使います。

同じネットワークに複数のコンテナが接続できます。接続すると、コンテナは他のコンテナの IP アドレスか名前で通信できるようになります。 overlay ネットワークやカスタム・プラグインは、複数のホスト間の接続サポートしているので、コンテナは同じマルチホスト・ネットワークに接続できるだけでなく、異なった Docker エンジンから起動された環境でも、同様に通信できます。

コンテナをネットワークから切断するには、 docker network disconnect コマンドを使います。

高度なオプションの設定

ネットワークの作成時、デフォルトではエンジンはネットワークのサブネットワークが重複しないようにします。サブネットワークは既存のネットワークの下位にはありません。純粋に IP アドレスを割り当てるためです。このデフォルトを上書きするには、 --subnet オプションを使ってサブネットワークの値を直接指定します。

docker network create -d --subnet=192.168.0.0/16

さらに、他にも --gateway --ip-range --aux-address オプションが利用可能です。

network create --driver=bridge --subnet=172.28.0.0/16 --ip-range=172.28.5.0/24 --gateway=172.28.5.254 br0

--gateway フラグを省略すると、エンジンは対象ネットワークの範囲内から1つ選びます。 overlay ネットワークとネットワーク・ドライバ・プラグインの場合は、複数のサブネットワークの作成をサポートしています。

docker network create -d overlay
  --subnet=192.168.0.0/16 --subnet=192.170.0.0/16
  --gateway=192.168.0.100 --gateway=192.170.0.100
  --ip-range=192.168.1.0/24
  --aux-address a=192.168.1.5 --aux-address b=192.168.1.6
  --aux-address a=192.170.1.5 --aux-address b=192.170.1.6
  my-multihost-newtork

サブネットワークが重複しないように気をつけてください。重複すると、ネットワークの作成に失敗し、エンジンはエラーを表示します。