docker network create¶
説明¶
ネットワークを作成します。
【API 1.21+】このコマンドを使うには、クライアントとデーモン API の両方が、少なくとも 1.21 の必要があります。クライアントとデーモン API のバージョンを調べるには、 docker version
コマンドを使います。
補足説明¶
新しいネットワークを作成します。 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
が、クラスタとしての適切な設定をすること。
dockerd
が overlay
ネットワークをサポートするために必要なオプションは、次の通りです。
--cluster-store
--cluster-store-opt
--cluster-advertise
各オプションや設定方法の詳細については、 マルチホスト・ネットワークを始めましょう をご覧ください。
overlay
ネットワークに必要な準備が整った後は、クラスタ上にあるホストのどれかで次のようなネットワーク作成コマンドを実行します。
$ docker network create -d overlay my-multihost-network
ネットワーク名はユニークにする必要があります。Docker デーモンは名前の衝突を避けようとしますが、保証されません。ユーザ・リポジトリも名前の衝突を避けようとします。
オーバレイ・ネットワークの制限¶
オーバレイ・ネットワークは /24
ブロック(これがデフォルトです)で作成すべきです。デフォルトの VIP をベースとしたエンドポイント・モードを使用するネットワークの作成時、 IP アドレスは 256 が上限となります。こちらを推奨する理由は swarm mode での制限(英語) で説明しています。 256 よりも多い IP アドレスが必要な場合は、 IP ブロックのサイズを増やさないでください。外部のロードバランサを使う dnsrr
エンドポイントか、複数の小さなオーバレイ・ネットワークか、どちらかを利用できます。異なるエンドポイント・モードについての情報は サービスディスカバリの設定 をご覧ください。
コマンドの使用例は、以下の 使用例のセクション をご覧ください。
オプション¶
名前, 省略形 |
デフォルト |
説明 |
---|---|---|
|
【API 1.25+】手動でのコンテナのアタッチを有効化 |
|
|
ネットワーク・ドライバが使う |
|
|
【API 1.30+】設定をコピーするネットワーク |
|
|
【API 1.30+】設定情報のみのネットワークを作成 |
|
|
|
対象ネットワークを管理するドライバ |
|
マスタ・サブネットに対する IPv4 または IPv6 ゲートウェイ |
|
|
【API 1.29+】swarm ルーティング・メッシュ・ネットワークを作成 |
|
|
外部からのアクセスを制限するネットワーク |
|
|
IP アドレス管理ドライバ |
|
|
IPAM ドライバ固有のオプションを指定 |
|
|
IPv6 ネットワーク機能を有効化 |
|
|
ネットワークにメタデータを設定 |
|
|
ドライバ固有のオプションを指定 |
|
|
【API 1.30+】ネットワーク範囲の制御 |
|
|
ネットワーク・セグメントを表す CIDR 形式のサブネット |
使用例¶
コンテナに接続¶
コンテナの起動時に --net
フラグを指定したら、ネットワークに接続します。 busybox
コンテナが mynet
ネットワークに接続するには、次のようにします。
$ docker run -itd --network=mynet busybox
既に実行中のコンテナに対してネットワークを接続したい場合は、 docker network connect
サブコマンドを使います。
同じネットワークに複数のコンテナが接続できます。接続したら、コンテナは他のコンテナの IP アドレスか名前で通信できるようになります。 overlay
ネットワークやカスタム・プラグインは、複数のホスト間の接続サポートしていますので、コンテナは同じマルチホスト・ネットワークに接続できるだけでなく、異なった Docker エンジンから起動された環境でも、同様に通信できます。
コンテナをネットワークから切断するには、 docker network disconnect
コマンドを使います。
高度なオプションの設定¶
ネットワークの作成時、デフォルトではエンジンはネットワークのサブネットワークが重複しないようにします。サブネットワークは既存のネットワークの下位にはありません。純粋に IP アドレスを割り当てるためです。このデフォルトを上書きするには、 --subnet
オプションを使ってサブネットワークの値を直接指定します。
$ docker network create --driver=bridge --subnet=192.168.0.0/16 br0
更に、他にも --gateway
--ip-range
--aux-address
オプションが利用可能です。
$ docker 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
ネットワークとネットワーク・ドライバ・プラグインの場合は、複数のサブネットワークの作成をサポートしています。この例では、1つのオーバレイ・ネットワークで 256 の IP アドレスを持たないようにという、現時点のガイダンスを守るため、2つの /25
サブネット・マスクを使用します。各サブネットワークでは 126 の利用可能なアドレスがあります。
$ docker network create -d overlay \
--subnet=192.168.10.0/25 \
--subnet=192.168.20.0/25 \
--gateway=192.168.10.100 \
--gateway=192.168.20.100 \
--aux-address="my-router=192.168.10.5" --aux-address="my-switch=192.168.10.6" \
--aux-address="my-printer=192.168.20.5" --aux-address="my-nas=192.168.20.6" \
my-multihost-network
サブ・ネットワークが重複しないように気を付けてください。重複したらネットワークの作成に失敗し、エンジンはエラーを表示します。
ブリッジ・ドライバのオプション¶
カスタム・ネットワークの作成時、デフォルトのネットワーク・ドライバ(例: bridge
)では追加のオプションを指定できます。以下のオプション指定は、 docker デーモンで docker0 ブリッジ用のフラグを指定するのと同等です。
オプション |
同等 |
説明 |
---|---|---|
|
- |
Linux ブリッジを作成する時に使うブリッジ名 |
|
|
IP マスカレードの有効化 |
|
|
内部におけるコンテナの接続性を、有効化または無効化 |
|
|
コンテナのポートをバインドする時の、デフォルト IP アドレスを指定 |
|
|
コンテナのネットワーク MTU を指定 |
|
コンテナのインターフェースに対し任意のプレフィクスを指定 |
以下の引数は docker network create
実行時、あらゆるネットワーク・ドライバで指定できます。ほとんどが docker daemon
で指定する項目と同等です。
オプション |
同等 |
説明 |
---|---|---|
|
― |
マスタ・サブネットに対する IPv4 または IPv6 ゲートウェイ |
|
|
範囲内で割り当てる IP アドレス |
|
― |
外部ネットワークに対する接続を制限 |
|
|
IPv6 ネットワーク機能を有効化 |
|
|
ネットワーク用のサブネット |
例えば、ポート公開用に使う IP アドレスを割り当てるには、 -o
か --opt
オプションを使います。
$ docker network create \
-o "com.docker.network.bridge.host_binding_ipv4"="172.19.0.1" \
simple-network
ネットワーク内部(internal)モード¶
コンテナを overlay
ネットワークに接続する時、デフォルトでは外部への接続性を提供するためブリッジ・ネットワークにも接続します。外部された隔離された overlay
ネットワークを作成したい場合は、 --internal
オプションを使います。
ネットワーク ingress モード¶
swarm クラスタ内で、ルーティング・メッシュを利用可能にするネットワークを作成可能です。そのためには、ネットワークの作成時に --ingress
を指定します。1度に作成できる ingress ネットワークは 1 つだけです。ネットワーク上にサービスが存在しない場合のみ、このネットワーク削除できます。 ingress ネットワークの作成時に、 overlay ネットワークで利用可能なオプションを指定できるのに加え、さらに --atachable
オプションも利用できます。
$ docker network create -d overlay \
--subnet=10.11.0.0/16 \
--ingress \
--opt com.docker.network.driver.mtu=9216 \
--opt encrypted=true \
my-ingress-network
レイ・ネットワークの両方に接続できます。
関連コマンド¶
コマンド |
説明 |
---|---|
コンテナをネットワークに接続 |
|
ネットワーク作成 |
|
ネットワークからコンテナを切断 |
|
1つまたは複数ネットワークの情報を表示 |
|
ネットワーク一覧表示 |
|
使用していないネットワークを全て削除 |
|
1つまたは複数ネットワークの削除 |
参考
- docker network create
https://docs.docker.com/engine/reference/commandline/network_create/