docker network create

説明

ネットワークを作成します。

【API 1.21+】このコマンドを使うには、クライアントとデーモン API の両方が、少なくとも 1.21 の必要があります。クライアントとデーモン API のバージョンを調べるには、 docker version コマンドを使います。

使い方

$ docker network create [OPTIONS] NETWORK

補足説明

新しいネットワークを作成します。 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、ZooKeeper(分散ストア)です。

  • クラスタの各ホストが、キーバリュー・ストアと接続できること。

  • 各ホスト上の Docker エンジンの daemon が、クラスタとしての適切な設定をすること。

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

  • --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 エンドポイントか、複数の小さなオーバレイ・ネットワークか、どちらかを利用できます。異なるエンドポイント・モードについての情報は サービスディスカバリの設定 をご覧ください。

コマンドの使用例は、以下の 使用例のセクション をご覧ください。

オプション

名前, 省略形

デフォルト

説明

--attachable

【API 1.25+】手動でのコンテナのアタッチを有効化

--aux-address

ネットワーク・ドライバが使う 補助の(auxiliary) IPv4 または IPv6 アドレス

--config-from

【API 1.30+】設定をコピーするネットワーク

--config-only

【API 1.30+】設定情報のみのネットワークを作成

--driver , -d

bridge

対象ネットワークを管理するドライバ

--gateway

マスタ・サブネットに対する IPv4 または IPv6 ゲートウェイ

--ingress

【API 1.29+】swarm ルーティング・メッシュ・ネットワークを作成

--internal

外部からのアクセスを制限するネットワーク

--ipam-driver

IP アドレス管理ドライバ

--ipam-opt

IPAM ドライバ固有のオプションを指定

--ipv6

IPv6 ネットワーク機能を有効化

--label

ネットワークにメタデータを設定

--opt , -o

ドライバ固有のオプションを指定

--scope

【API 1.30+】ネットワーク範囲の制御

--subnet

ネットワーク・セグメントを表す 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 ブリッジ用のフラグを指定するのと同等です。

オプション

同等

説明

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.driver.mtu

--mtu

コンテナのネットワーク MTU を指定

com.docker.network.container_iface_prefix

コンテナのインターフェースに対し任意のプレフィクスを指定

以下の引数は 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 オプションを使います。

ネットワーク 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

レイ・ネットワークの両方に接続できます。

親コマンド

コマンド

説明

docker network

ネットワークを管理

関連コマンド

コマンド

説明

docker network connect

コンテナをネットワークに接続

docker network craete

ネットワーク作成

docker network disconnect

ネットワークからコンテナを切断

docker network inspect

1つまたは複数ネットワークの情報を表示

docker network ls

ネットワーク一覧表示

docker network prune

使用していないネットワークを全て削除

docker network rm

1つまたは複数ネットワークの削除