Docker 17
引擎: CLI | Engine: CLI

docker network create

docker网络创建

描述

创建网络

用法

docker network create [OPTIONS] NETWORK

选项

名称,简写默认描述
--attachablefalse启用手动容器附件
--aux地址 map[]网络驱动程序使用的辅助IPv4或IPv6地址
--config-from从中复制配置的网络
--config-onlyfalse创建一个仅配置网络
--driver,-dbridge驱动程序来管理网络
--gateway主子网的IPv4或IPv6网关
--ingressfalse创建群体​​路由网状网络
--internalfalse限制对网络的外部访问
--ip-range从子范围分配容器IP
--ipam-driverdefaultIP地址管理驱动程序
--ipam-opt map[]设置IPAM驱动程序特定选项
--ipv6false启用IPv6网络
--label在网络上设置元数据
--opt, -o map[]设置驱动程序特定选项
--scope控制网络的范围
--subnet表示网段的CIDR格式的子网

父命令

命令描述
docker网络管理网络

相关命令

命令描述
docker network connect将容器连接到网络
docker network create创建一个网络
docker network disconnect从网络断开容器
docker network inspect显示一个或多个网络的详细信息
docker network ls列出网络
docker network prune删除所有未使用的网络
docker network rm删除一个或多个网络

扩展描述

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

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

桥接网络是单个引擎安装中的隔离网络。如果您想创建一个跨多个运行引擎的多个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守护进程尝试识别命名冲突,但不能保证。避免名称冲突是用户的责任。

实例

连接容器

当您启动容器时,请使用--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网络和支持它的网络驱动程序插件,您可以创建多个子网。

$ 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="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-在创建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

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

论据当量描述
--gateway-主子网的IPv4或IPv6网关
--ip范围--fixed,CIDR从一个范围分配IP
- 内部-限制对网络的外部访问
--ipv6--ipv6启用IPv6网络
--subnet--bip网络子网

例如,让我们使用-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.mtu=9216 \ --opt encrypted=true \ my-ingress-network