手机版

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

时间:2020-03-16 来源:互联网 编辑:宝哥软件园 浏览:
Usage:  docker network create [OPTIONS] NETWORK
 
Create a network
 
Options:
      --aux-address value    Auxiliary IPv4 or IPv6 addresses used by Network
                             driver (default map[])
  -d, --driver string        Driver to manage the Network (default "bridge")
      --gateway value        IPv4 or IPv6 Gateway for the master subnet (default [])
      --help                 Print usage
      --internal             Restrict external access to the network
      --ip-range value       Allocate container ip from a sub-range (default [])
      --ipam-driver string   IP Address Management Driver (default "default")
      --ipam-opt value       Set IPAM driver specific options (default map[])
      --ipv6                 Enable IPv6 networking
      --label value          Set metadata on a network (default [])
  -o, --opt value            Set driver specific options (default map[])
      --subnet value         Subnet in CIDR format that represents a
                             network segment (default [])

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

$ 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网络的配置前提条件,只需要在集群中的任何一台主机执行创建网络命令:

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

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

连接容器

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

$ docker run -itd --network=mynet busybox

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

指定高级选项

当创建一个网络时,Engine默认为这个网络创建一个不重叠的子网。这个子网不是现有网络的细分。 它纯粹是为了寻址目的。可以直接使用–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,那么Engine将从首选的ip池中为你选择一个gateway。对于overlay网络和及类似功能的网络驱动,可以创建多个子网。

$ docker network create -d overlay 
  --subnet=192.168.0.0/16 
  --subnet=192.170.0.0/16 
  --gateway=192.168.0.100 
  --gateway=192.170.0.100 
  --ip-range=192.168.1.0/24 
  --aux-address="my-router=192.168.1.5" --aux-address="my-switch=192.168.1.6" 
  --aux-address="my-printer=192.170.1.5" --aux-address="my-nas=192.170.1.6" 
  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地址:

$ docker network create 
    -o "com.docker.network.bridge.host_binding_ipv4"="172.19.0.1" 
    simple-network

网络内部模式

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

版权声明:Docker命令行参考(29) – docker network create创建一个网络是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。

相关文章推荐