[关闭]
@tata 2014-09-23T13:33:08.000000Z 字数 2482 阅读 2215

Docker 研究

Docker


构建工具

使用Packer

Packer是一个通过配置文件创建一致机器镜像(identical machine images)的非常方便的工具。Packer同样出自Vagrant的作者Mitchell Hashimoto之手。它支持虚拟机VirtualBox和VMWare等虚拟机软件,以及Amazon EC2、DigitalOcean、GCE以及OpenStack等云平台,最新版的Packer也增加了对Docker的支持。

开源项目

PaaS平台

Flynn

Flynn是一个高度模块化的下一代开源PaaS实现。Flynn分为两层,Layer 0是底层,也叫资源层,基于Google的Omega论文注 15开发,这一层也包括服务发现。Layer 1则用来进行部署、管理应用程序。Flynn目前开发比较活跃,是一个值得关注的开源项目,而且今年夏天很可能就会发布1.0的版本了。

Deis

Deis是一个支持共有和私有PaaS的开源实现。它支持运行使用Ruby, Python, Node.js, Java, PHP和Go等语言进行应用开发,并能部署到AWS, Rackspace和DigitalOcean等云上。

Apache Mesos + marathon

Apache Mesos系统是一套资源管理调度集群系统,生产环境使用它可以实现应用集群。此系统是由Twitter发起的Apache开源项目。在这个集群系统里,我们可以使用Zookeeper开启3个Mesos master服务,当3个Mesos master通过zookeeper交换信息后会选出Leader服务,这时发给其它两台Slave Messos Master上的请求会转发到Messos master Leader服务。Mesos slave服务器在开启后会把内存、存储空间和CPU 资源信息发给Messos master。Mesos是一个框架,在设计它的时候只是为了用它执行Job来做数据分析。它并不能运行一个比如Web服务Nginx这样长时间运行的服务,所以我们需要借助marathon来支持这个需求。marathon有自己的REST API。

Google Kubernetes

Google的一个容器集群管理工具,它提出两个概念:

  1. Pods,每个Pod是一个容器的集合并部署在同一台主机上,共享IP地址和存储空间,比如Apache,Redis之类分为一组容器集合。
  2. Labels,提供服务标签,方便Pod容器之间的调用协作。

通过官方架构设计文档的介绍,可以详细的了解每个组件的设计思想。这是目前业界唯一在生产环境部署经验的基础上推出的开源容器方案,可以预见到未来会成为容器管理系统的行业参考标准。

Panamax

在琳琅满目的集群管理工具面前,如何管理单机的Docker容器也是一个需要解决问题。因为Docker占用内存小,在单机服务器上部署成百上千个容器也不足为奇。Panamax提供人性化的Web管理界面用来安装软件让部署变得更简单。并且,Panamax还提供丰富的容器模板,让在线创建服务成为可能。比如到DigitalOcean申请一台主机,安装一套Panamax启动为后台服务。然后通过Panamax Web界面安装Nginx、Mysql、Redis等服务镜像,这样可以快速搭建生产环境的应用场景。所有的操作都是在Web界面上完成,开发者只需要关注开发本身即可。此处输入图片的描述

CI/CD(持续集成/持续部署)

当开发团队把代码提交到Git应用仓库的那一刻,我相信所有的开发者都希望有一个系统能帮助他们把这个应用程序部署到应用服务器上,以节省不必要的人工成本。但是,复杂的应用部署场景,让这个想法实现起来并不简单。

由于Docker的沙箱性、创建速度快等特性,它与生俱来也适合进行CI/CD。很多基于Docker的CI/CD开源方案和服务如雨后春笋般的涌现出来。

Drone
开源的支持各种语言的CI工具,并且提供了CI/CD服务Drone.io

Strider CD
开源的CI/CD方案,集成GitHub。

Jenkins
它的主要特点是项目开源、方便定制、使用简单。Jenkins可以方便的安装各种第三方插件,从而方便快捷的集成第三方的应用。
Jenkins的管道部署把部署的流程形象化成为一个长长的管道,每间隔一小段会有一个节点,也就是Job,完成这个Job工作后才可以进入下一个环节。

使用Docker之后,任务的模块化很自然地被定义出来。通过管道图,可以查看每一步的执行时间。开发者也可以针对任务的需要,为每一个任务定义严格的性能标准,已作为之后测试工作的参考基础。

私有仓库托管(Registry)/容器托管

Shippable支持Github和Bitbucket,并且提供100%免费的服务,包括私有仓库。

待整理

参考:
(1)深入浅出Docker(四):Docker的集成测试部署之道(肖德时)

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注