码头工人网络创建

描述

创建一个网络

API 1.21+  客户端和守护程序API都必须至少为 1.21, 才能使用此命令。docker version在客户端上使用命令检查客户端和守护程序API版本。

用法

$ docker network create [OPTIONS] NETWORK

扩展说明

创建一个新的网络。在DRIVER接受bridge或者overlay它们是内置的网络驱动程序。如果您已经安装了第三方或自己的自定义网络驱动程序,则也可以DRIVER在此处指定。如果未指定该 --driver选项,则该命令会自动bridge为您创建一个网络。当您安装Docker Engine时,它会bridge自动创建一个网络。该网络对应于docker0Engine传统上依赖的网桥。当您启动新容器时, 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守护程序尝试识别命名冲突,但这不能保证。避免名称冲突是用户的责任。

叠加网络限制

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

有关此命令的示例用法,请参阅下面的示例部分

选项

名称,简写 默认 描述
--attachable API 1.25+
启用手动容器附件
--aux-address 网络驱动程序使用的辅助IPv4或IPv6地址
--config-from API 1.30+
从中复制配置的网络
--config-only API 1.30+
创建仅配置的网络
--driver-d bridge 驱动程序来管理网络
--gateway 主子网的IPv4或IPv6网关
--ingress API 1.29+
创建群集路由网状网络
--internal 限制对网络的外部访问
--ip-range 从子范围分配容器ip
--ipam-driver IP地址管理驱动程序
--ipam-opt 设置IPAM驱动程序特定选项
--ipv6 启用IPv6网络
--label 在网络上设置元数据
--opt-o 设置驱动程序特定选项
--scope API 1.30+
控制网络范围
--subnet 代表网段的CIDR格式的子网

例子

连接容器

启动容器时,请使用该--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 子网掩码来遵守当前的指导原则,即单个覆盖网络中的IP不能超过256个。每个子网都有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

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

桥驱动程序选项

创建自定义网络时,默认网络驱动程序(即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
com.docker.network.container_interface_prefix -- 为容器接口设置自定义前缀

可以将以下参数传递给docker network create任何网络驱动程序,它们的近似值也与相同docker daemon

争论 相等的 描述
--gateway -- 主子网的IPv4或IPv6网关
--ip-range --fixed-cidr 分配范围内的IP
--internal -- 限制对网络的外部访问
--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.driver.mtu=9216 \
  --opt encrypted=true \
  my-ingress-network

上级命令

命令 描述
码头工人网络 管理网络
命令 描述
码头工人网络连接 将容器连接到网络
码头工人网络创建 创建一个网络
泊坞窗网络断开 断开容器与网络的连接
码头工人网络检查 在一个或多个网络上显示详细信息
码头工人网络ls 列出网络
码头工人网络修剪 删除所有未使用的网络
码头工人网络 删除一个或多个网络