在介绍 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的安装
- Docker的配置文件 daemon.json 详细解
- Docker的启动参数
- Docker的命令之概述
- Docker的命令之容器管理 Container
- Docker的命令之镜像管理 Image
- Docker的命令之网络管理 network
- Docker的命令之集群节点管理 Swarm node
- Docker的命令之插件管理 Plugin
- Docker的命令之安全管理 Docker secret
- Docker的命令之集群服务管理 Service
- Docker的命令之 Docker stacks
- Docker的命令之集群管理 swarm
- Docker的命令之系统管理 Docker system
- Docker的命令之数据卷管理 Volume
- Docker的命令之快捷指令
- Docker中的镜像构建-Dockerfile指令详解
- Docker的实践笔记
- Docker create / Docker run 的选项详解
Pingback引用通告: Docker的命令之概述 | 精彩每一天
Pingback引用通告: Docker的启动参数 | 精彩每一天
Pingback引用通告: Docker create / Docker run 的选项详解 | 精彩每一天