docker 网络创建

描述创建网络
用法docker network create [OPTIONS] NETWORK

描述

创建新网络。接受 或 哪些是 内置网络驱动程序。如果您安装了第三方或您自己的自定义 network driver,您也可以在此处指定。如果您未指定该选项,该命令将自动为您创建一个网络。 安装 Docker Engine 时,它会自动创建一个网络。这 network 对应于 Docker Engine 传统上依赖的桥 上。当您使用它启动新容器时,它会自动连接到 这个桥梁网络。您无法删除此默认桥接网络,但可以删除 使用命令创建新的 MissAV.com 。DRIVERbridgeoverlayDRIVER--driverbridgebridgedocker0docker runnetwork 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 块大小。您可以 将终端节点模式与外部负载均衡器一起使用,或使用多个 较小的叠加网络。有关不同终端节点模式的更多信息,请参阅配置服务发现/24dnsrr

选项

选择违约描述
--attachableAPI 1.25+启用手动容器附加
--aux-address网络驱动程序使用的辅助 IPv4 或 IPv6 地址
--config-fromAPI 1.30+要从中复制配置的网络
--config-onlyAPI 1.30+创建仅配置网络
-d, --driverbridge管理网络的驱动程序
--gateway主子网的 IPv4 或 IPv6 网关
--ingressAPI 1.29+创建 swarm routing-mesh 网络
--internal限制外部对网络的访问
--ip-range从子范围分配容器 ip
--ipam-driverIP 地址管理驱动程序
--ipam-opt设置 IPAM 驱动程序特定选项
--ipv6启用或禁用 IPv6 网络
--label在网络上设置元数据
-o, --opt设置特定于驱动程序的选项
--scopeAPI 1.30+控制网络范围
--subnetCIDR 格式的子网,表示一个网段

例子

连接容器

启动容器时,请使用 标志将其连接到网络。 此示例将容器添加到网络:--networkbusyboxmynet

$ docker run -itd --network=mynet busybox

如果要在容器已经存在之后将容器添加到网络 running,请使用子命令。docker network connect

您可以将多个容器连接到同一网络。连接后, 容器只能使用其他容器的 IP 地址或名称进行通信。 对于支持多主机连接的网络或自定义插件, 容器连接到同一个多主机网络,但从不同的网络启动 守护进程也可以以这种方式进行通信。overlay

您可以使用该命令断开容器与网络的连接。docker network disconnect

指定高级选项

当您创建网络时,Docker Engine 会创建一个不重叠的子网 对于网络。此子网不是现有 网络。它纯粹用于 IP 寻址目的。您可以覆盖此默认值 ,然后使用该选项直接指定子网值。在网络上,您只能创建一个子网:--subnetbridge

$ 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 个可用地址。--gatewayoverlay/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 还会 将桥接网络连接到它以提供外部连接。如果需要帮助, 要创建外部隔离的网络,您可以指定该选项。overlayoverlay--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 网络和 上创建服务。bridgehost

$ 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