用法

docker network create [OPTIONS] NETWORK

选项

名字,速记

默认

描述

--attachable

 

API 1.25+ Enable manual container attachment -----启用手动容器附件

--aux-address

 

Auxiliary IPv4 or IPv6 addresses used by Network driver -----网络驱动程序使用的辅助IPv4或IPv6地址

--config-from

 

API 1.30+ The network from which copying the configuration -----从中复制配置的网络

--config-only

 

API 1.30+ Create a configuration only network -----创建仅配置网络

--driver , -d

bridge

Driver to manage the Network -----用于管理网络的驱动程序

--gateway

 

IPv4 or IPv6 Gateway for the master subnet -----主子网的IPv4或IPv6网关

--ingress

 

API 1.29+ Create swarm routing-mesh network -----创建swarm路由网状网络

--internal

 

Restrict external access to the network -----限制对网络的外部访问

--ip-range

 

Allocate container ip from a sub-range -----从子范围分配容器ip

--ipam-driver

 

IP Address Management Driver -----IP地址管理驱动程序

--ipam-opt

 

Set IPAM driver specific options -----设置IPAM驱动程序特定选项

--ipv6

 

Enable IPv6 networking -----启用IPv6网络

--label

 

Set metadata on a network -----在网络上设置元数据

--opt , -o

 

Set driver specific options -----设置驱动程序特定选项

--scope

 

API 1.30+ Control the network’s scope -----控制网络的范围

--subnet

 

Subnet in CIDR format that represents a network segment -----CIDR格式的子网,代表网段

扩展说明

创建一个新网络。在DRIVER接受bridge或者overlay它们是内置的网络驱动程序。如果您已安装第三方或您自己的自定义网络驱动程序,则还可以DRIVER在此处指定。如果未指定该 --driver选项,该命令将自动bridge为您创建网络。安装Docker Engine时,它会bridge自动创建网络。该网络对应于docker0Engine传统上依赖的桥。当您启动一个新容器时, docker run它会自动连接到此桥接网络。您无法删除此默认网桥,但可以使用该network create命令创建新网桥。

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

桥接网络是单个Engine安装上的隔离网络。如果要创建跨越多个运行引擎的Docker主机的overlay网络,则必须创建网络。与bridge网络不同,覆盖网络需要一些预先存在的条件才能创建一个。这些条件是:

  • 访问键值存储。引擎支持Consul,Etcd和ZooKeeper(分布式存储)键值存储。
  • 连接到键值存储的主机群集。
  • daemon在群集中的每个主机上正确配置的引擎。

dockerd支持overlay网络的选项包括:

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

要阅读有关这些选项以及如何配置它们的更多信息,请参阅“ 多主机网络入门 ”

虽然不是必需的,但最好安装Docker Swarm来管理构成网络的群集。Swarm提供复杂的发现和服务器管理工具,可以帮助您实施。

准备好overlay网络先决条件后,只需在群集中选择Docker主机并发出以下命令即可创建网络:

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

网络名称必须是唯一的。Docker守护程序尝试识别命名冲突,但这不能保证。用户有责任避免名称冲突。

覆盖网络限制

/24在使用默认的基于VIP的端点模式创建网络时,应创建带有块的覆盖网络(默认设置),这会将您限制为256个IP地址。此建议解决 了群集模式的限制。如果您需要超过256个IP地址,请不要增加IP块大小。您可以将dnsrr端点模式与外部负载均衡器配合使用,也可以使用多个较小的覆盖网络。 有关不同端点模式的详细信息,请参阅 配置服务发现

例子

连接容器

启动容器时,使用该--network标志将其连接到网络。此示例将busybox容器添加到mynet网络:

$ docker run -itd --network=mynet busybox

如果要在容器已运行后将容器添加到网络,请使用docker network connect子命令。

您可以将多个容器连接到同一网络。连接后,容器只能使用其他容器的IP地址或名称进行通信。对于overlay支持多主机连接的网络或自定义插件,连接到同一多主机网络但从不同引擎启动的容器也可以通过这种方式进行通信。

您可以使用该docker network disconnect命令断开容器与网络的连接。

指定高级选项

创建网络时,默认情况下,Engine会为网络创建不重叠的子网。此子网不是现有网络的细分。它纯粹用于ip寻址目的。您可以覆盖此默认值并使用该--subnet选项直接指定子网值。在 bridge网络上,您只能创建一个子网:

$ 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标志,则引擎会从首选池中为您选择一个标记。对于overlay网络和支持它的网络驱动程序插件,您可以创建多个子网。此示例使用两个/25 子网掩码来遵守单个覆盖网络中不超过256个IP的当前指导。每个子网有126个可用地址。

$ docker network create -d overlay \
  --subnet=192.168.1.0/25 \
  --subnet=192.170.2.0/25 \
  --gateway=192.168.1.100 \
  --gateway=192.170.2.100 \
  --aux-address="my-router=192.168.1.5" --aux-address="my-switch=192.168.1.6" \
  --aux-address="my-printer=192.170.1.5" --aux-address="my-nas=192.170.1.6" \
  my-multihost-network

确保您的子网不重叠。如果他们这样做,网络创建失败并且引擎返回错误。

桥驱动器选项

创建自定义网络时,默认网络驱动程序(即bridge)具有可以传递的其他选项。以下是用于docker0网桥的那些选项和等效的docker守护程序标志:

选项

当量

描述

com.docker.network.bridge.name

-

bridge name to be used when creating the Linux bridge -----创建Linux网桥时要使用的网桥名称

com.docker.network.bridge.enable_ip_masquerade

--ip-masq

Enable IP masquerading -----启用IP伪装

com.docker.network.bridge.enable_icc

--icc

nable or Disable Inter Container Connectivity -----启用或禁用Inter Container连接

com.docker.network.bridge.host_binding_ipv4

--ip

Default IP when binding container ports -----绑定容器端口时的默认IP

com.docker.network.driver.mtu

--mtu

Set the containers network MTU -----设置容器网络MTU

以下参数可以传递给docker network create任何网络驱动程序,再次使用它们的近似等价物docker daemon

争论

当量

描述

--gateway

-

IPv4 or IPv6 Gateway for the master subnet -----主子网的IPv4或IPv6网关

--ip-range

--fixed-cidr

Allocate IPs from a range -----分配范围内的IP

--internal

-

Restrict external access to the network -----限制对网络的外部访问

--ipv6

--ipv6

Enable IPv6 networking -----启用IPv6网络

--subnet

--bip

Subnet for network -----网络子网

例如,让我们使用-o--opt选项在发布端口时指定IP地址绑定:

$ docker network create \
    -o "com.docker.network.bridge.host_binding_ipv4"="172.19.0.1" \
    simple-network

网络内部模式

默认情况下,当您将容器连接到overlay网络时,Docker还会将桥接网络连接到该网络以提供外部连接。如果要创建外部隔离overlay网络,可以指定该 --internal选项。

网络入口模式

您可以创建将用于在群集群集中提供路由网格的网络。您可以通过指定--ingress创建网络的时间来实现。当时只能创建一个入口网络。仅当没有服务依赖于网络时,才能删除网络。除了--attachable选项之外,创建入口网络时也可以使用创建覆盖网络时可用的任何选项。

$ 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