Docker命令行参考(29) – docker network create创建一个网络

  1. Usage:  docker network create [OPTIONS] NETWORK
  2.  
  3. Create a network
  4.  
  5. Options:
  6.       --aux-address value    Auxiliary IPv4 or IPv6 addresses used by Network
  7.                              driver (default map[])
  8.   -d, --driver string        Driver to manage the Network (default "bridge")
  9.       --gateway value        IPv4 or IPv6 Gateway for the master subnet (default [])
  10.       --help                 Print usage
  11.       --internal             Restrict external access to the network
  12.       --ip-range value       Allocate container ip from a sub-range (default [])
  13.       --ipam-driver string   IP Address Management Driver (default "default")
  14.       --ipam-opt value       Set IPAM driver specific options (default map[])
  15.       --ipv6                 Enable IPv6 networking
  16.       --label value          Set metadata on a network (default [])
  17.   -o, --opt value            Set driver specific options (default map[])
  18.       --subnet value         Subnet in CIDR format that represents a
  19.                              network segment (default [])

docker network create用来创建一个新的网络。其中–driver可以指定bridge或内置网络驱动overlay。如果安装了第三方的或自己编写的网络驱动,也可以指定到这里。如果不指定–driver选项,这个命令将自动为你创建一个bridge网络。当安装docker engine时它自动创建了一个bridge网络。这个网络对应于Engine传统上依赖的docker0 bridge。当使用docker run启动一个容器时会自动连接到这个bridge网络。不可以删除这个默认的bridge网络,不过可以使用docker network create命令来创建一个新的。

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

bridge网络是在单台Engine安装上的隔离网络。如果想创建一个跨多个运行着Engine的docker主机,必须创建一个overlay网络。不像bridge网络,在创建overlay网络之前,需要一些预存在的条件。这些条件是:

  • 一个能够访问的键值存储。Engine支持Consul, Etcd, 和ZooKeeper (分布式的存储)键值存储.
  • 集群中的节点能够连接到这个键值存储。
  • 在集群中的每台主机正确地配置Engine daemon。
  • dockerd支持overlay网络的选项是:

  • –cluster-store
  • –cluster-store-opt
  • –cluster-advertise
  • 虽然不是必须的,但推荐安装docker swarm来管理组成你的网络的集群。Swarm提供了成熟的发现和服务器管理工具,可以帮助你更好地管理集群。
    一旦满足了overlay网络的配置前提条件,只需要在集群中的任何一台主机执行创建网络命令:

    1. $ docker network create -d overlay my-multihost-network

    网络名称必须是唯一的。docker daemon虽然会尝试识别名称冲突,但无法保证都会工作。避免名称冲突这个是用户的责任。

    连接容器

    当运行一个容器时,使用–network标志来连接它到一个网络。下面的示例是把busybox容器添加到mynet网络:

    1. $ docker run -itd --network=mynet busybox

    如果想在容器已经在运行时把它添加到一个网络,使用docker network connect子命令。
    可以连接多个容器到一个相同的网络。一旦连接成功,这些容器就可以使用另一个容器的IP地址或名称来互相通信。对于支持多主机连接的overlay网络或自定义插件,那些连接到相同的多主机网络但在不同的Engine启动的容器也能够以这种方式来互相通信。
    可以使用docker network disconnect命令来从一个网络断开一个容器。

    指定高级选项

    当创建一个网络时,Engine默认为这个网络创建一个不重叠的子网。这个子网不是现有网络的细分。 它纯粹是为了寻址目的。可以直接使用–subnet选项来覆盖这个默认行为并指定一个子网。在一个bridge网络上创建一个单独的子网:

    1. $ docker network create --driver=bridge --subnet=192.168.0.0/16 br0

    除此之外,可以指定–gateway –ip-range和–aux-address选项。

    1. $ docker network create \
    2.   --driver=bridge \
    3.   --subnet=172.28.0.0/16 \
    4.   --ip-range=172.28.5.0/24 \
    5.   --gateway=172.28.5.254 \
    6.   br0

    如果没有指定–gateway,那么Engine将从首选的ip池中为你选择一个gateway。对于overlay网络和及类似功能的网络驱动,可以创建多个子网。

    1. $ docker network create -d overlay \
    2.   --subnet=192.168.0.0/16 \
    3.   --subnet=192.170.0.0/16 \
    4.   --gateway=192.168.0.100 \
    5.   --gateway=192.170.0.100 \
    6.   --ip-range=192.168.1.0/24 \
    7.   --aux-address="my-router=192.168.1.5" --aux-address="my-switch=192.168.1.6" \
    8.   --aux-address="my-printer=192.170.1.5" --aux-address="my-nas=192.170.1.6" \
    9.   my-multihost-network

    要确保子网没有重叠。如果重叠了,网络创建将失败,然后Engine返回一个错误。

    bridge驱动选项

    当创建一个自定义的网络时,默认的网络驱动(如bridge)可以传递额外的选项。下面是这些选项且有与docker daemon选项等同的选项:

    选项 等同 描述
    com.docker.network.bridge.name 创建Linux bridge使用的bridge名称
    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,可以用于任何网络驱动。

    参数 等同 描述
    –gateway 主子网的IPv4或IPv6网关
    –ip-range –fixed-cidr 从一个IP范围分配IP
    –internal 限制外网网络连接到这个网络
    –ipv6 –ipv6 启用Ipv6网络
    –subnet –bip 子网

    例如,使用-o或–opt选项当发布端口时绑定的IP地址:

    1. $ docker network create \
    2.     -o "com.docker.network.bridge.host_binding_ipv4"="172.19.0.1" \
    3.     simple-network

    网络内部模式

    默认下,当连接一个容器到一个overlay网络时,docker同时也连接到bridge网络来提供外部连接。如果想创建一个与外部隔离的overlay网络,可以指定–internal选项。

    标签:Docker 发布于:2019-11-19 08:42:10