network create¶
使い方: docker network create [オプション] ネットワーク名
ユーザが名付ける新しいネットワークを作成
--aux-address=map[] ネットワーク・ドライバが使う ipv4 または ipv6 追加アドレス
-d --driver=DRIVER ネットワーク・ブリッジまたはオーバレイを管理するドライバ。デフォルトは bridge
--gateway=[] マスタ・サブネット用の ipv4 または ipv6 ゲートウェイ
--help 使い方の表示
--internal ネットワークの外部へのアクセスを制限
--ip-range=[] サブ・レンジからコンテナの IP アドレスを割り当て
--ipam-driver=default IP アドレス管理用ドライバ
--ipam-opt=map[] カスタム IPAM ドライバ固有のオプションを指定
-o --opt=map[] カスタムドライバ固有のオプションを指定
--subnet=[] ネットワーク・セグメントを表すサブネットを CIDR 形式で指定
新しいネットワークを作成します。 DRIVER
には bridge
か overlay
を指定できます。どちらも内蔵のネットワーク・ドライバです。サードパーティー製のドライバをインストールするか、カスタム・ネットワーク・ドライバを組み込むのであれば、同様に 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、ZooKeeper(分散ストア)です。
- クラスタの各ホストが、キーバリュー・ストアと接続できること。
- 各ホスト上の Docker エンジンの
daemon
が、クラスタとしての適切な設定をすること。
docker daemon
が overlay
ネットワークをサポートするために必要なオプションは、次の通りです。
--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-network
サブ・ネットワークが重複しないように気を付けてください。重複したらネットワークの作成に失敗し、エンジンはエラーを表示します。
ブリッジ・ドライバのオプション¶
カスタム・ネットワークの作成時、デフォルトのネットワーク・ドライバ(例: bridge
)では追加のオプションを指定できます。以下のオプション指定は、 docker デーモンで docker0 ブリッジ用のフラグを指定するのと同等です。
オプション | 同等 | 説明 |
---|---|---|
com.docker.network.bridge.name |
- | Linux ブリッジを作成する時に使うブリッジ名 |
com.docker.network.bridge.enable_ip_masquerade |
--ip-masq |
IP マスカレードの有効化 |
com.docker.network.bridge.enable_icc |
--icc |
内部におけるコンテナの接続性を、有効化または無効化 |
com.docker.network.bridge.host_binding_ipv4 |
--ip |
コンテナのポートをバインドする時の、デフォルト IP アドレスを指定 |
com.docker.network.bridge.mtu |
--mtu |
コンテナのネットワーク MTU を指定 |
以下の引数は docker network create
実行時、あらゆるネットワーク・ドライバで指定できます。ほとんどが docker daemon
で指定する項目と同等です。
オプション | 同等 | 説明 |
---|---|---|
--geteway |
― | マスタ・サブネットに対する IPv4 または IPv6 ゲートウェイ |
--ip-range |
--fixed-cidr |
範囲内で割り当てる IP アドレス |
--internal |
― | 外部ネットワークに対する接続を制限 |
--ipv6 |
--ipv6 |
IPv6 ネットワーク機能を有効化 |
--subnet |
--bip |
ネットワーク用のサブネット |
例えば、ポート公開用に使う IP アドレスを割り当てるには、 -o
か --opt
オプションを使います。
docker network create -o "com.docker.network.bridge.host_binding_ipv4"="172.19.0.1" simple-network
内部ネットワーク(internal)モード¶
コンテナを overlay
ネットワークに接続する時、デフォルトでは外部への接続性を提供するためブリッジ・ネットワークにも接続します。外部された隔離された overlay
ネットワークを作成したい場合は、 --internal
オプションを使います。