用法
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
自动创建网络。该网络对应于docker0
Engine传统上依赖的桥。当您启动一个新容器时, 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