Docker的命令之网络管理 network

在介绍 docker network的命令之前,务必先知道 network 在docker体系中扮演的角色、特性、以及作用。参考一篇转载的文章:Docker network的网络特性,使用 docker network –help ,可以查看所有network(网络)相关的命令。

Usage:    docker network COMMAND

Manage networks

Options:
      --help   Print usage

Commands:
  connect     Connect a container to a network
  create      Create a network
  disconnect  Disconnect a container from a network
  inspect     Display detailed information on one or more networks
  ls          List networks
  prune       Remove all unused networks
  rm          Remove one or more networks

Run 'docker network COMMAND --help' for more information on a command.
# 可以使用 docker network COMMAND --help ,继续查看使用说明。

一、详细介绍

ls 列出所有当前主机上或Swarm集群上的网络
例如:docker network ls
例如:docker network ls -q
NETWORK ID          NAME                DRIVER              SCOPE
8a571a96526f        backend             bridge              local
f44cc63626bc        bridge              bridge              local
04a2db81d0f4        frontend            bridge              local
0d1ca2af95ea        host                host                local
3852b9cae762        none                null                local其中 NAME为bridge、host、none为内置的docker网络,无法删除
rm 删除一个网络
create 创建一个网络
格式:docker network create [OPTIONS] NETWORK
常用选项
-d, –driver #可以指定bridge或内置网络驱动overlay,默认bridge
–gateway #主子网的IPv4或IPv6网关
–ingress  #Create swarm routing-mesh network
–internal #限制外网网络连接到这个网络
–ip-range #从一个ip范围内分配IP,使用CIDR的方式
–ipam-driver string    # IP Address Management Driver (default “default”)
–ipam-opt map           #Set IPAM driver specific options (default map[])
–ipv6 #启用Ipv6网络
–label list            # Set metadata on a network
-o, –opt map                Set driver specific options (default map[])
–subnet #使用CIDR的方式创建子网例如:docker network create -d bridge frontend
例如:docker network create –subnet=192.168.50.0/24 br0 #创建192.168.50.0/24的子网
例如:docker network create –subnet=192.168.50.0/24 –ip-range=192.168.50.0/24 br0
例如:docker network create –subnet=192.168.10.0/24 –internal br1
prune 清除未使用的docker网络
例如:docker network prune -f
connect 将容器添加进一个已有网络
例如:docker network connect br0 d7debaa899a1
例如:docker network connect –ip 192.168.50.101 br0 d7debaa899a1 指定容器的IP
可以使用 docker inspect d7debaa899a1 查看 Networks
disconnect 将容器从网络中移除
例如:docker network disconnect br0 d7debaa899a1
可以使用 docker inspect d7debaa899a1 查看 Networks
inspect 查看网络详情
例如:docker network inspect f6e49456403b

 二、创建网络

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命令来从一个网络断开一个容器。

四、指定高级选项

参考上表

五、网络内部模式

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

推荐关于docker net 的文章:https://www.oschina.net/translate/docker-network-configuration

 

推荐相关文档:

Docker的命令之网络管理 network》上有3条评论

  1. Pingback引用通告: Docker的命令之概述 | 精彩每一天

  2. Pingback引用通告: Docker的启动参数 | 精彩每一天

  3. Pingback引用通告: Docker create / Docker run 的选项详解 | 精彩每一天

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>