Docker Swarm 已死!Docker Swarm 万岁!

Docker在上周的DockerCon技术大会上发布了1.12版核心产品Docker Engine,最大的新特性是Docker Swarm已经被整合到了Docker Engine里面而不再是一个单独的工具了,这样就可以更容易的把多个Docker主机组合成一整个规模更大可靠性更高的逻辑单元。Docker的掌舵者 Adrian Mouat相信这种新的集群模式可以大大增强Docker在相关领域的竞争力。

把Docker Swarm整合进Docker Engine是一个重大改进,但它也只是一个附加功能,你可以只在需要的时候才使用它。你可以用和以前一样的方式来安装、运行和升级Docker 1.12,而且它也对已有的容器镜像和工具向后兼容。

在一台主机上运行Docker和在使用Docker Compose来部署应用程序方法都是和以前一样的。你甚至可以在已有的Docker Swarm上使用1.12版Docker Engine。除非你是显式地使用新引擎来创建一个集群,否则运行时行为仍然和以前版本一样。

旧的Docker Swarm产品是以套件形式提供的,本身没有什么核心功能。Docker Swarm进程在各个节点上做为容器运行,而且还需要许多其他技术来辅助它,比如用Consul或etcd来做服务发现,用Nginx做负载均衡等。集群 实际上要先运行一堆基础设施容器,然后才能运行你自己的应用程序容器。

搭建起一个旧的集群也并非易事,因为在你创建集群之前服务发现组件就要就位,可是之后你又想让它作为集群的一个部分来运行,所以你什么事情都没开始干就要先解决一个“先有鸡还是先有蛋”的问题。Jacob Blain Christen在他的文章“Toward a Production-Ready Docker Swarm Cluster with Consul”里面很好的解释了这个问题。

在新的集群模式下用一个'init'命令即可创建集群,用'join'命令可以把工作者加入集群。创建和加入集群的命令一般一两秒钟就可以执行完毕。Mouat说“与把Kubernetes或Mesos集群启动起来相比,启动Docker集群就是一闪的事”。

节点之间的通信安全由传输层安全协议(TLS)来保证。为了安装简便,Docker 1.12会在创建集群时生成自签名证书,当然也可以换成你从自己的证书颁发机构获得的证书。这些证书在节点内部通信时会被用到,但所有对外的服务仍然是和以前一样使用你原来的证书。

Nigel Poulton在DockerCon大会上分享了旧版和1.12版启动集群的对比图:

Docker建议在一个L3子网内运行所有集群节点,但根据你自己的实际情况,也可以把节点划分到不同的子网里,把运行对外服务容器的节点和内部节点隔离开来。

这种隔离方法也许你已经在独立的生产集群上使用过了。我在贴子“在Azure上部署Docker生产集群”中已经结合微软的云服务写了文档。

集群的自我认知能力是最重大的改变。集群中的每个节点都可以连接其他任何一个节点,并且可以把请求路由到它需要去的地方。你再也不必自己运行负载均衡器并把它与动态服务发现代理结合起来了,对这点以前的方式通常是Nginx加Interlock。

如果一个节点收到了一条处理不了的请求,它就会找到运行了可以处理这条请求的容器的节点,并把这条请求路由过去。这个过程对用户是透明的,他们最终只能收到一条响应消息,完全不知道在集群内部是否发生过消息转发。

这个Docker叫作“路由网”的功能支持外部负载均衡。你可以在集群前面放一个对外的负载均衡器,并把它配置成所有服务的唯一入口,它就会把流入的消息在集群内部随意分发,然后收到了消息的节点就会智能的把它处理不了的消息转发到合适的地方去。Docker核心工程组解释路由网用到了Linux的核心功能,即一个已经在Linux内核中存在了至少15年的负载均衡功能。

路由网和调度器的组合可以保证即使有节点发生故障也不会造成服务中断。负载均衡器不会把任何请求发送到出故障的节点上。如果因为故障导致服务所需要的最小副本数达不到要求,调度器就会自动在别的节点上运行起新的副本来。

Docker Swarm仍然是原生的Docker集群的名字,但在1.12版的集群模式下它也是Docker Egnine的一个组成部分,不再是一个单独的产品了。你可以获得服务发现服务,可以给集群配置多个管理者来增强可靠性,以及配置满足你需要的足够数量的 工作者。

在这个版本里,Docker Engine脱离了其他Docker产品跑到前面了。现在还不能用Docker Machine来部署一个新式的集群,也不能用Docker Compose来部署服务。但Docker社区总是动作很快,所以期待它们也很快被整合进来吧。

查看英文原文:Docker Swarm Is Dead. Long Live Docker Swarm.

文章转载自 开源中国社区[http://www.oschina.net]

时间: 2024-07-31 08:32:44

Docker Swarm 已死!Docker Swarm 万岁!的相关文章

网络工程师已死,开发者万岁?

"网络工程师已死,开发者万岁."尽管这个改变了网络工程师资格的概念颇受追捧,特别是随着SDN的不断演进更为如此,然而从本质上来讲这是片面的,这太极端了. 事情的真相是,好的网络工程师一直是开发人员,每次投身命令行界面时都在写"代码". 自从数据互联时代的到来,那些建立链接以及连接系统的角色不断发生变化.为了完成任务,他们可能得像计算机科学家或工程师那样去写代码.随着时间的推移,他们成了设计.配置并维护系统到系统.网络到网络连接的专家.只有在过去15到20年这样,网络

Docker Swarm已死!Docker Swarm万岁!

Docker在上周的DockerCon技术大会上发布了1.12版核心产品Docker Engine,最大的新特性是Docker Swarm已经被整合到了Docker Engine里面而不再是一个单独的工具了,这样就可以更容易的把多个Docker主机组合成一整个规模更大可靠性更高的逻辑单元.Docker的掌舵者Adrian Mouat相信这种新的集群模式可以大大增强Docker在相关领域的竞争力. 把Docker Swarm整合进Docker Engine是一个重大改进,但它也只是一个附加功能,你

CoffeeScript 已死,CoffeeScript 万岁!

正如你可能已经听说的,JavaScript今年又准备推出一个新版本-ES6.这个名字源于它遵循了"ECMAScript"编码标准的第六个重 要版本:ECMA-262.在这个期待已久的发布中,将包括一些对绝大多数JavaScript开发者处理问题大有裨益的新特性. 一些光芒四射的流行语--类.字符串插值.生成器函数.箭头函数.迭代器与for/of循环.这些都是具有重大意义的进步,但你可能也知道,这些特 性中的许多或更多已经以CoffeeScript的形式存在了一段时间了,那是"

年终盘点:解读2016之容器篇——“已死”和“永生”

也说不上什么时候起,"XXX Is Dead. Long Live XXX"的句式突然成为了技术会议上演讲题目的一个标准套路.然而不管已经被引用的多么烂俗,用这套悖论来总结2016年容器技术圈子发生的凡事种种,却实在有种说不出来的恰到好处. 无需多言,稍微回顾一下2016年容器技术圈子的时间线,我们很容易就能回想起容器技术如何在这一年迅速登上云计算舞台的中心.这股热潮,从年初Docker公司闪电收购Unikernel Systems提前扼杀各种"被颠覆"的苗头,蔓延

Docker Swarm入门:启动Swarm管理者及代理

本文讲的是Docker Swarm入门:启动Swarm管理者及代理[编者的话]在上一篇文章中开始介绍Docker Swarm入门,并已建好了令牌,下面让我们开始启动管理者容器,这是一切的基础. 启动Swarm管理者及代理 首先,启动Swarm管理者,然后创建代理加入Swarm集群.这两步都在上一篇启动"Swarm"容器时已经完成,下面将使用不用的参数启动集群.由于管理者已经是'激活'节点,所以可使用以下命令创建Swarm 集群: $ docker run -d -p 3376:3376

docker在已有的tomcat镜像上打新的镜像的Dockerfile编写说明介绍_docker

如果需要将某个文件替换或者添加到旧的tomcatimage中,形成一个新的image,需要在dockerfile中做一下操作 FROM old_tomcat #这里可以使用docker官方的镜像,以下说明都是在此基础上的实例 MAINTAINER ****************** #如果需要替换原有的配置文件或者脚本 ADD web.xml /usr/local/tomcat/webapps/manager/WEB-INF/ ADD tomcat-users.xml /usr/local/t

【阿里在线技术峰会】易立:从Docker到容器服务 ——Docker 云端实践之路

本文主要从Docker的编排技术,Docker在一个大规模生产环境中的使用开始切入,围绕Docker应用的深化,像谷歌,AWS,阿里云都推出了这样的容器服务,分享并分析了新的概念--Container as a Service,着重讲解了微服务支持和DevOps,并谈及了容器服务解决了哪些问题,最后介绍了Docker的最新发展趋势. 直播视频:点此进入 PDF下载:点此进入 以下为整理内容: Docker编排技术 大家都已经了解了Docker是什么样的技术,Docker是标准化的构建.交付.运维

虚拟机已死,容器才是未来?

我也曾经是容器技术尤其是 Docker 粉丝,但用了一年后觉得事情也没那么美好,而颇有一些同学以及一些公司依然认为容器就是银弹,虚拟机已经是昨儿黄花必须打倒,大家赶紧一切皆容器.这里我对这种观点吐吐槽.仅代表作者个人看法 首先要明确的是,软件开发和运维活动中,可维护性.正确性.性能的优先级是依次降低的,不要跟我抬杠少数极端情况.关于可维护性和正确性的先后,著 名的 "worse is better" 文章就是很好的无奈的解释,如果你犹豫这两者,这还情有可原,毕竟真善美和糙快猛的斗争从未

Docker Machine快速安装Docker环境(二)

什么是Docker Machine? Machine是一个简化安装Docker环境的工具.怎么简化法,例如,在ubuntu安装一个docker环境要按照U这个系统配置教程来装,哪天又换了CentOS系统,又要按照这个系统配置教程装.市场上主流Linux系统版本很多,每次安装岂不有些麻烦.使用Machine工具就简单很多,一两条命令即可在主流Linux系统上安装Docker环境,用户不用考虑什么操作系统. 另一方面,Machine还具备Docker工具管理什么虚拟化技术,Generic驱动默认管理