@tata
2014-09-23T13:33:08.000000Z
字数 2482
阅读 2215
Docker
Packer是一个通过配置文件创建一致机器镜像(identical machine images)的非常方便的工具。Packer同样出自Vagrant的作者Mitchell Hashimoto之手。它支持虚拟机VirtualBox和VMWare等虚拟机软件,以及Amazon EC2、DigitalOcean、GCE以及OpenStack等云平台,最新版的Packer也增加了对Docker的支持。
Flynn是一个高度模块化的下一代开源PaaS实现。Flynn分为两层,Layer 0是底层,也叫资源层,基于Google的Omega论文注 15开发,这一层也包括服务发现。Layer 1则用来进行部署、管理应用程序。Flynn目前开发比较活跃,是一个值得关注的开源项目,而且今年夏天很可能就会发布1.0的版本了。
Deis是一个支持共有和私有PaaS的开源实现。它支持运行使用Ruby, Python, Node.js, Java, PHP和Go等语言进行应用开发,并能部署到AWS, Rackspace和DigitalOcean等云上。
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的一个容器集群管理工具,它提出两个概念:
通过官方架构设计文档的介绍,可以详细的了解每个组件的设计思想。这是目前业界唯一在生产环境部署经验的基础上推出的开源容器方案,可以预见到未来会成为容器管理系统的行业参考标准。
在琳琅满目的集群管理工具面前,如何管理单机的Docker容器也是一个需要解决问题。因为Docker占用内存小,在单机服务器上部署成百上千个容器也不足为奇。Panamax提供人性化的Web管理界面用来安装软件让部署变得更简单。并且,Panamax还提供丰富的容器模板,让在线创建服务成为可能。比如到DigitalOcean申请一台主机,安装一套Panamax启动为后台服务。然后通过Panamax Web界面安装Nginx、Mysql、Redis等服务镜像,这样可以快速搭建生产环境的应用场景。所有的操作都是在Web界面上完成,开发者只需要关注开发本身即可。
当开发团队把代码提交到Git应用仓库的那一刻,我相信所有的开发者都希望有一个系统能帮助他们把这个应用程序部署到应用服务器上,以节省不必要的人工成本。但是,复杂的应用部署场景,让这个想法实现起来并不简单。
由于Docker的沙箱性、创建速度快等特性,它与生俱来也适合进行CI/CD。很多基于Docker的CI/CD开源方案和服务如雨后春笋般的涌现出来。
Drone
开源的支持各种语言的CI工具,并且提供了CI/CD服务Drone.io
Strider CD
开源的CI/CD方案,集成GitHub。
Jenkins
它的主要特点是项目开源、方便定制、使用简单。Jenkins可以方便的安装各种第三方插件,从而方便快捷的集成第三方的应用。
Jenkins的管道部署把部署的流程形象化成为一个长长的管道,每间隔一小段会有一个节点,也就是Job,完成这个Job工作后才可以进入下一个环节。
使用Docker之后,任务的模块化很自然地被定义出来。通过管道图,可以查看每一步的执行时间。开发者也可以针对任务的需要,为每一个任务定义严格的性能标准,已作为之后测试工作的参考基础。
Shippable支持Github和Bitbucket,并且提供100%免费的服务,包括私有仓库。
配置管理Docker镜像的工具的选择,比如Ansible、Chef、Puppet
配置管理Docker镜像的工具主要用于基于Dockerfile创建Image的配置管理。我们需要结合开发团队的现状,选择Host主机系统的选择,比如CoreOS、Atomic、Ubuntu一款团队熟悉的工具作为通用工具。配置工具有很多种选择,其中Ansible作为后起之秀,在配置管理的使用中体验非常简单易用,推荐大家参考使用。
Host主机系统的选择,比如CoreOS、Atomic、Ubuntu
Host主机系统是Docker后台进程的运行环境。从开发角度来看,它就是一台普通的单机OS系统,我们仅部署Docker后台进程以及集群工具,所以希望Host主机系统的开销越小越好。这里推荐给大家的Host主机系统是CoreOS,它是目前开销最小的主机系统。另外,还有红帽的开源Atomic主机系统,有基于Fedora、CentOS、RHEL多个版本的分支选择,也是不错的候选对象。另外一种情况是选择最小安装操作系统,自己定制Host主机系统。如果你的团队有这个实力,可以考虑自己定制这样的系统。
参考:
(1)深入浅出Docker(四):Docker的集成测试部署之道(肖德时)