docker 网络创建
描述 | 创建网络 |
---|---|
用法 | docker network create [OPTIONS] NETWORK |
描述
创建新网络。接受 或 哪些是
内置网络驱动程序。如果您安装了第三方或您自己的自定义
network driver,您也可以在此处指定。如果您未指定该选项,该命令将自动为您创建一个网络。
安装 Docker Engine 时,它会自动创建一个网络。这
network 对应于 Docker Engine 传统上依赖的桥
上。当您使用它启动新容器时,它会自动连接到
这个桥梁网络。您无法删除此默认桥接网络,但可以删除
使用命令创建新的 MissAV.com 。DRIVER
bridge
overlay
DRIVER
--driver
bridge
bridge
docker0
docker run
network create
$ docker network create -d bridge my-bridge-network
桥接网络是单个 Docker Engine 安装上的隔离网络。如果你
想要创建一个跨多个 Docker 主机(每个主机运行 Docker)的网络
Engine 的 Shell,您必须启用 Swarm 模式,并创建一个网络。阅读更多
有关使用 Swarm 模式的覆盖网络,请参阅“使用覆盖网络”。overlay
启用 swarm 模式后,您可以创建一个 swarm 范围的覆盖网络:
$ docker network create --scope=swarm --attachable -d overlay my-multihost-network
默认情况下,群范围的网络不允许手动启动的容器 被附加。添加此限制是为了防止有权访问 Swarm 集群中的非管理器节点无法运行能够 以访问 Swarm 服务的网络堆栈。
上例中使用的选项禁用了此限制
并允许 Swarm 服务和手动启动的容器附加到
覆盖网络。--attachable
网络名称必须唯一。Docker 守护程序尝试识别命名 冲突,但不能保证。避免是用户的责任 名称冲突。
覆盖网络限制
您应该创建带有块(默认)的覆盖网络,这会限制
u 设置为 256 个 IP 地址,当您使用基于默认 VIP 的
endpoint-mode 的 intent 模式。此建议解决了 swarm 模式的限制。如果你
需要超过 256 个 IP 地址,请勿增加 IP 块大小。您可以
将终端节点模式与外部负载均衡器一起使用,或使用多个
较小的叠加网络。有关不同终端节点模式的更多信息,请参阅配置服务发现。/24
dnsrr
选项
选择 | 违约 | 描述 |
---|---|---|
--attachable | API 1.25+启用手动容器附加 | |
--aux-address | 网络驱动程序使用的辅助 IPv4 或 IPv6 地址 | |
--config-from | API 1.30+要从中复制配置的网络 | |
--config-only | API 1.30+创建仅配置网络 | |
-d, --driver | bridge | 管理网络的驱动程序 |
--gateway | 主子网的 IPv4 或 IPv6 网关 | |
--ingress | API 1.29+创建 swarm routing-mesh 网络 | |
--internal | 限制外部对网络的访问 | |
--ip-range | 从子范围分配容器 ip | |
--ipam-driver | IP 地址管理驱动程序 | |
--ipam-opt | 设置 IPAM 驱动程序特定选项 | |
--ipv6 | 启用或禁用 IPv6 网络 | |
--label | 在网络上设置元数据 | |
-o, --opt | 设置特定于驱动程序的选项 | |
--scope | API 1.30+控制网络范围 | |
--subnet | CIDR 格式的子网,表示一个网段 |
例子
连接容器
启动容器时,请使用 标志将其连接到网络。
此示例将容器添加到网络:--network
busybox
mynet
$ docker run -itd --network=mynet busybox
如果要在容器已经存在之后将容器添加到网络
running,请使用子命令。docker network connect
您可以将多个容器连接到同一网络。连接后,
容器只能使用其他容器的 IP 地址或名称进行通信。
对于支持多主机连接的网络或自定义插件,
容器连接到同一个多主机网络,但从不同的网络启动
守护进程也可以以这种方式进行通信。overlay
您可以使用该命令断开容器与网络的连接。docker network disconnect
指定高级选项
当您创建网络时,Docker Engine 会创建一个不重叠的子网
对于网络。此子网不是现有
网络。它纯粹用于 IP 寻址目的。您可以覆盖此默认值
,然后使用该选项直接指定子网值。在网络上,您只能创建一个子网:--subnet
bridge
$ docker network create --driver=bridge --subnet=192.168.0.0/16 br0
此外,您还可以指定 and 选项。--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
如果省略该标志,Docker Engine 将从内部为您选择一个
首选池。对于网络和网络驱动程序插件
支持它,您可以创建多个子网。此示例使用两个子网掩码来遵守当前 IP 不超过 256 个的指导
单个叠加网络。每个子网都有 126 个可用地址。--gateway
overlay
/25
$ 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
确保您的子网不重叠。如果他们这样做,网络会创建 失败,Docker Engine 返回错误。
桥接驱动程序选项
创建自定义网络时,默认网络驱动程序(即 )具有
可以传递的其他选项。以下是这些选项和
用于 docker0 bridge 的等效 Docker 守护进程标志:bridge
选择 | 等效 | 描述 |
---|---|---|
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_iface_prefix | - | 为容器接口设置自定义前缀 |
对于任何
network 驱动程序,同样具有与 Docker 守护进程大致等效的
用于 docker0 桥接的标志:docker network create
论点 | 等效 | 描述 |
---|---|---|
--gateway | - | 主子网的 IPv4 或 IPv6 网关 |
--ip-range | --fixed-cidr | 从范围分配 IP |
--internal | - | 限制外部对网络的访问 |
--ipv6 | --ipv6 | 启用或禁用 IPv6 网络 |
--subnet | --bip | 网络的子网 |
例如,让我们使用 or 选项来指定 IP 地址绑定
发布端口时:-o
--opt
$ docker network create \
-o "com.docker.network.bridge.host_binding_ipv4"="172.19.0.1" \
simple-network
网络内部模式 (--internal)
内部网络上的容器可以相互通信,但不能 对于任何其他网络,因为未配置默认路由和防火墙规则 设置为丢弃进出其他网络的所有流量。通信对象 网关 IP 地址(以及因此适当配置的主机服务)是 可能,并且主机可以直接与任何容器 IP 通信。
默认情况下,当您将容器连接到网络时,Docker 还会
将桥接网络连接到它以提供外部连接。如果需要帮助,
要创建外部隔离的网络,您可以指定该选项。overlay
overlay
--internal
网络入口模式 (--ingress)
您可以创建网络,该网络将用于在
swarm 集群。您可以通过在创建网络时指定来执行此操作。只
此时可以创建一个 Ingress 网络。只能删除网络
如果没有服务依赖于它。创建覆盖网络时可用的任何选项
在创建入口网络时,除了该选项之外,也可以使用。--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
在预定义的网络上运行服务
您可以在预定义的 Docker 网络和 上创建服务。bridge
host
$ docker service create --name my-service \
--network host \
--replicas 2 \
busybox top
具有本地范围驱动程序的 Swarm 网络
您可以使用本地范围的网络驱动程序创建群网络。你这样做
通过在创建网络期间将 Network 范围提升到 。
然后,您将能够在创建服务时使用此网络。swarm
$ docker network create -d bridge \
--scope swarm \
--attachable \
swarm-network
对于提供跨主机连接的网络驱动程序(例如 macvlan),如果 需要特定于节点的配置才能在每个节点上探测网络 host 中,您将通过 Configuration Only 网络提供该配置。 创建 swarm 范围网络时,您将指定 network 中,其中包含配置。
node1$ docker network create --config-only --subnet 192.168.100.0/24 --gateway 192.168.100.115 mv-config
node2$ docker network create --config-only --subnet 192.168.200.0/24 --gateway 192.168.200.202 mv-config
node1$ docker network create -d macvlan --scope swarm --config-from mv-config --attachable swarm-network