Docker 1.12.0版本新增\删除\修复功能介绍
了解(Docker 1.11.1 版本新增\删除\修复功能介绍)
利用单一分散化构建块打造Swarm
docker swarm init
在引擎盖之下,这条命令会创建一个Raft节点协作组。作为首个节点,其负责实现管理功能,意味着它可以接收命令并调度任务。随着向Swarm中添加更多节点,后续节点将默认作为工作节点存在,分别执行由管理节点分派的任务。管理节点属于Raft协作组的组成部分。我们利用一套经过优化的Raft存储体系,其直接读取内存内容以提升调度工作的性能表现。
服务的创建与规模扩展
正如使用docker run命令运行单一容器,现在大家可以利用docker service命令在Engine Swarm上启动一个经过复制、分布与负载均衡的进程:
docker service create –name frontend –replicas 5 -p 80:80/tcp nginx:latest
这条命令声明了必要状态,即将由5套Nginx容器构成的Swarm作为单一内部负载均衡型服务,且于Swarm内任意节点的端口80上进行交付。从内部角度看,我们可以使用Linux IPVS实现这一效果——这是一套内核内4层多协议负载均衡机制,早在15年之前就已经登陆Linux内核。在IPVS负责于内核中路由各数据包的前提下,Swarm的路由方案能够提供高性能容器感知型负载均衡效果。
在创建服务时,我们可以选择创建复制型或者全局服务。复制型服务意味着我们定义的任意数量的容器都可扩散至全部可用主机。相比之下,全局服务则代表调度Swarm当中每台主机上同一容器的一个实例。
希望将业务规模扩展至上百个实例?同样非常简单:
docker service scale frontend=100
常见的双层(web+db)应用可按以下方法创建:
docker network create -d overlay mynet docker service create –name frontend –replicas 5 -p 80:80/tcp \ –network mynet mywebapp docker service create –name redis –network mynet redis:latest
安全性
Docker 1.12的一大核心原则就是为Docker平台建立起一套完整的无配置、默认安全且开箱即用的使用体验。由于管理员们在向生产环境部署应用时,首先考虑的就是安全问题,因此Docker 1.12允许管理员利用与演示集群同样的步骤设置出安全的生产集群。
安全性需要事前考量而非事%
值得关注的变化
支持分卷范围(本地/全局)#22077
虽然这一变更谈不到什么飞跃,但如今使用docker分卷(例如swarm)的各服务已经能够将可用分卷识别为本地(特定主机)或全局(全部主机)。过去,当我们在swarm管理器中运行“docker volume ls”时,所有可用于全部swarm代理的全局分卷都会在各主机上被分别列出。这使得我们很难据此构建起可扩展的Docker Swarm集群。现在,新的调整让我们得以轻松区分全局分卷与本地分卷。
支持分卷状态 #21006
过去,每个Docker分卷只包含分卷名称、驱动器名称、安装位置以及基本标签(如果使用)等信息。
而在1.12版本中,我们能够获取更多来自驱动器的各分卷细节信息(嵌套于Status下)。
其它变化
支持ZFS分卷大小 #21946
在1.12版本之前,我们无法强制指定ZFS分卷的大小,但现在已经可以通过“-storage-opts”实现。
为分卷安装/卸载请求匹配惟一ID #21015
当分卷安装/卸载请求被发送至分卷驱动器时,系统会同时生成一条惟一ID以确保驱动器对各请求加以追踪。如此一来,分卷驱动器就能够更好地识别安装与卸载请求。
支持利用BTRFS实现磁盘配额 #19651
如果利用BTRFS取代devicemapper作为默认docker文件系统,我们将能够为各独立docker容器设置最大大小或容量配额。
分卷名称/驱动器过滤 #21015
新版本提供的增强过滤机制适用于“docker volume”命令/api请求。这意味着我们可以获取更为具体的特定分卷名称信息,或者可由特定分卷驱动器访问的全部分卷。