码头工人网络创建
描述
创建一个网络
API 1.21+
客户端和守护程序API都必须至少为
1.21,
才能使用此命令。docker version
在客户端上使用命令检查客户端和守护程序API版本。
用法
$ docker network create [OPTIONS] NETWORK
扩展说明
创建一个新的网络。在DRIVER
接受bridge
或者overlay
它们是内置的网络驱动程序。如果您已经安装了第三方或自己的自定义网络驱动程序,则也可以DRIVER
在此处指定。如果未指定该
--driver
选项,则该命令会自动bridge
为您创建一个网络。当您安装Docker Engine时,它会bridge
自动创建一个网络。该网络对应于docker0
Engine传统上依赖的网桥。当您启动新容器时, 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 | 列出网络 |
码头工人网络修剪 | 删除所有未使用的网络 |
码头工人网络 | 删除一个或多个网络 |