Docker相关的项目
整理自《Docker技术入门与实践》
PaaS(Platform as a Service)
PaaS 是希望提供一个统一的可供所有软件直接运行而无需复杂配置的操作系统平台。Docker 与生俱来的应用封装为 PaaS 的实现带来了便利。基于 Docker 的 PaaS 项目:
Deis
重要链接:
官方网站 ; 代码维护基本信息:
Deis 是开源的 PaaS 项目,基于Go语言实现,遵循 Apache 2.0协议。由 OpDemand 公司在2013年7月发起,第一次代码提交:07/23/2013。OpDemand 公司提供对Deis的商业服务支持。目标:
提供轻量级的 PaaS 实现,为用户提供简单的应用管理和部署。相关:
Deis 基于 Docker 项目和 CoreOS 项目,并遵循 SaaS 应用的“十二因素”风格。通过简单的 git push 命令来部署应用,加速集成和部署过程;还支持对应用容器通过单条命令进行扩展。在架构设计上,Deis 整合了一系列 Docker 容器,可以被部署到公有云、私有云、以及本地环境中,并提供了完整的测试、诊断工具。(十二因素:代码、依赖、配置、后端服务、生命周期、进程、端口、并发、可丢弃性、开发与生产差异性、日志、管理)
Flynn
重要链接:
官方网站 ; 代码维护基本信息:
Flynn 项目是基于 Heroku 项目(支持多种编程语言-Ruby、Java、Node.js、Scala、Clojure、Python-的 PaaS 实现),受 Omege 概念(flexible,scalable schedulers for large compute cluters)启发,由一个创业团队在2013年7月发起,基于 Go 语言。第一次代码提交:07/14/2013。目标:
解决一些部署方面的问题,如在部署 SOA(Service Oriented Architecture:大规模分布式系统常采用的架构风格,需要功能组件间的松耦合)产品至公有云的过程中,往往需要人工部署和维护大量不同的功能部件。而 Flynn 不仅能完成简单可控的部署,还能进行自由的扩展,并提供数据库管理等功能,可以方便的实现一套比较理想的 PaaS 方案。相关:
在设计上,Flynn 项目尽量保持API驱动和模块化,以便模块支持不同的实现方案。底层实现一套支持服务发现的资源管理框架,上层实现适合部署和维护的应用组件。
持续集成
Drone 项目利用 Docker 技术,实现持续集成(Continuous Integration)平台服务。
Drone
重要链接:
官方网站 ; 代码维护基本信息:
Drone 是开源的持续集成平台项目,基于 Go 语言实现,遵循 Apache 2.0协议。最初由 Drone 公司在2014年2月发起。第一次代码提交:02/03/2014。Drone 公司基于该项目提供支持 Github、Bitbucket 和 Google Code 等第三方代码托管平台的持续集成服务。Drone 基于 Docker 和 AUFS 实现,为用户提供基于网站的操作。相关:
登录选择源码的存放服务;从仓库列表中选择项目;配置项目的语言种类;检查创建命令是否正确并根据需要进行调整;在 Drone 平台上进行持续集成管理。
管理工具
Docker 自身对单个容器的操作已经提供了功能强大的命令行操作和 API 操作接口(Docker Remote API),对于多个容器(尤其是容器集群)的管理方案,官方提供了 Compose + Machine + Swarm;但图形界面的管理平台,官方尚未给出方案。但已有不少开源项目在尝试提供功能强大且便捷的Docker管理工具,如 Citadel、Shipyard、DockerUI、Panamax、Kubernetes 等。
Citadel
重要链接:
官方网站 ; 代码维护基本信息:
Citadel 项目于2014年4月由 Citadel 团队正式推出,基于Go语言实现。第一次代码提交:04/21/2014。目标:
提供一套在由 Docker 容器构成的集群中对容器进行调度的工具,主要包括集群管理组件和调度组件。其中集群管理组件(Cluster Manager)负责管理集群的状态,通过调用 Docker 提供的 API 来连接到宿主机,管理容器;调度组件(Scheduler)决策如何进行调度,支持多套调度方法,包括基于标签、基于是否同一镜像、基于主机、组合方法等多种调度机制。相关:
用户使用 Citadel 首先要为调度组件提供容器类型,并指定调度所关心的资源限制;此后,调度器会根据容器类型、服务将容器启动到合适的主机上。
Shipyard
重要链接:
官方网站 ; 代码维护基本信息:
Shipyard 项目于2013年11月发起,部分开发者来自 Citadel 项目团队。第一次代码提交:06/23/2013。目标:
基于 Citadel 项目提供一套对 Docker 集群中资源进行管理的工具,包括对 Docker 容器、主机等资源的管理。相关:
Shipyard 最大的特点是在核心部件之外还支持扩展镜像,可以根据需求灵活实现应用负载均衡,集中日志管理和自动化部署等功能。此外,Shipyard 还提供了方便用户的Web界面,功能更加强大的命令行操作接口,以及统一的 API。Shipyard 支持的命令包括 login、run、stop、restart、info 等。
Kubernetes
重要链接:
官方网站 ; 代码维护基本信息:
Kubernetes 项目由 Google 于2014年6月开源,核心基于 Go 语言。第一次代码提交:06/03/2014。目标:
让用户在跨容器主机集群的情况下,可以轻松的管理、监测、控制容器化应用部署。为 Docker 工作负载构建一个精致的、可扩展和便携式管理的框架。允许客户像谷歌管理搜索和 Gmail 等超大规模应用程序一样来管理他们的应用程序。相关:
Kubernetes核心概念是容器组(Container Pod),即一批工作于同一物理工作节点的容器。这些容器拥有相同的网络命名空间、IP地址和存储配额,可以根据实际情况对每一个容器组进行端口映射。此外,Kubernetes 有一个与软件定义网络(Software Defined Networking,SDN)非常相似的网络管理概念:通过一个服务代理创建一个可以分配给任意数目容器的IP地址,前端的应用程序或使用该服务的用户仅通过这一IP地址调用服务,而不需关心其他细节。现已有 Microsoft、RedHat、IBM、Docker、Mesosphere、CoreOS 及 SaltStack 公司加入了 Kubernetes 社区。还有Flannel 等项目针对 Kubernetes 提供覆盖网络功能。
DockerUI
重要链接:
代码维护 ; 镜像及用法:uifd/ui-for-docker 或 kevan/dockerui基本信息:
DockerUI 基于 html/js 语言实现,遵循 MIT 许可。第一次代码提交:06/09/2013。
Panamax
重要链接:
官方网站 ; 代码维护基本信息:
Panamax 项目诞生于2014年3月,由CenturyLink实验室发起,基于 Ruby 语言,遵循 Apache 2.0 协议,可以部署在 Google、Amazon 等云平台或本地环境。第一次代码提交:03/25/2014。目标:
通过一套优雅的界面实现对复杂的 Docker 容器应用的管理,如利用简单拖拽来完成操作。相关:
Panamax 项目基于 Docker、CoreOS、Fleet 提供对容器的自动化管理和任务调度,还提供了开源应用的模板库,以便集中管理不同应用的配置和架构。
Seagull
重要链接:
代码维护 ; 镜像及用法基本信息:
Seagull 是由小米工程师陈迪豪发布的开源 Docker 容器和镜像的 Web 界面监控工具,基于 Go 和 JavaScript 实现,集成了 Beego、AngularJS、Bootstrap、Bower、JQuery 和 Docker 等工具。第一次代码提交:10/13/2014。相关:
Seagull 会在本地运行一个 Web 服务,通过 Beego 实现的 API 服务器不断请求 Docker 的本地套接字以管理 Docker。
其他项目
CoreOS
重要链接:
官方网站 ; 代码维护基本信息:
CoreOS 项目基于 Python 语言,遵循 Apache 2.0协议,由 CoreOS 团队在2013年7月发起。目标:
提供一个基于 Docker 的轻量级容器化 Linux 发行版,通过轻量级的系统架构和灵活的应用部署能力来简化数据中心的维护成本和复杂度。相关:
CoreOS 基于一套精简的 Linux 环境,不使用包管理工具,而将所有应用都进行容器化,彼此隔离,从而提高了系统的安全性。此外,运行期间,系统分区是只读状态,利用主从分区支持更稳定的无缝升级。配合 etcd(分布式高可用的键值数据库)、fleet(CoreOS 集群的管理工具)等工具,CoreOS 也适用于大规模集群。
Fig(Compose)
重要链接:
官方网站基本信息:
Fig 项目基于 Python 语言,由 Docker 公司在2013年12月发起。目标:
提供一个同时部署多个容器并将其联合的解决方案。也就是 Docker 的一款编排工具。相关:
在一个 YAML 格式的配置文件中定义依赖的镜像和容器间的连接关系,通过一条简单的指令 fig up 来自动启动相应容器,完成部署。
Compose(Fig)
重要链接:
官方网站 ; 代码维护基本信息:
Docker 官方提供的编排工具。2015年2月26日,Docker 官方博客宣布 Docker Compose 已经可以下载安装。Compose 的用法跟Fig十分相似,其实 Compose 就是基于 Fig 开发的,并且兼容使用 Fig 的应用程序。根据官方的说明,Fig 已经被重新命名为 Compose,从 Fig 和 Compose 在 github.com 上维护的代码是同一套就可以看出。使用 Fig 的用户可以非常简单的升级到 Compose。
OpenStack支持
重要链接:
官方网站基本信息:
OpenStack 是 Linux 基金会发起的最受欢迎的开源项目,基于 Python 语言,遵循 Apache 2.0 协议,受到 IBM、Cisco、AT&T、HP、Rackspace等企业的大力支持。目标:
提供一套开源的 IaaS(Infrastructure as a Service - 架构即服务)方案。相关:
OpenStack 不仅可以管理众多虚拟机,其计算服务(Nova)还支持对 Docker 的驱动,OpenStack 管理引擎的 Heat 子项目还可用于通过模板管理 Docker 容器。
dockerize
重要链接:
代码维护基本信息:
简化应用部署到容器过程中应用依赖的配置信息和应用运行时输出日志的管理成本。目标:
可以自动提取环境变量生成配置文件;将应用输出的日志信息重定向到STDOUT和STDERR。相关:
如在构建Nginx镜像的过程中,需要创建配置模板文件default.tmpl用于接收来自环境变量的值,然后在Dockerfile最后的CMD中利用dockerize进行封装,用-template参数指定配置模板位置以及生成的配置文件的位置,利用模板生成应用配置文件,并重定向日志文件输出到标准输出。
libcontainer、libchan、SwarmKit
重要链接:
libcontainer项目 ; libchan项目 ; SwarmKit项目 ;基本信息:
libcontainer
Linux内核3.12引入了一套专为容器技术考虑的API,由于各种容器技术对API的不同实现,使应用的运行不得不考虑其所在的容器和平台。而libcontainer试图为应用提供一套统一的API,使其无需关心具体的容器实现。libcontainer现已整合Parallels公司所支持的libct项目。Docker也计划逐步迁移到libcontainer上,该项目有助于实现多种平台(包括Windows平台)之间容器的迁移。
libchan
libchan所实现的功能类似于已有的各种消息系统,但它宣称将打造适合现代各种微型并发服务的极轻量级(ultra-lightweight)的网络服务库,并支持In-memory Go channel、Unix socket、Raw TCP、TLS、HTTP2/SPDY、Websocket等多种协议。SwarmKit
SwarmKit原名libswarm,基于libchan项目,定义了分布式系统中各服务组件之间互相通信的标准接口,并试图实现一整套的网络服务组件。包括Docker Server、Docker Client、SSH tunnel、Etcd、SkyDNS、Mesos、OpenStack Nova、Google Compute等各种服务。用户可以通过它在同一机器上同时管理运行在不同主机上的Docker容器,任意的替换集群中的各种服务,包括服务发现、DNS。SwarmKit实际上是在开发一套基础系统,其他各种集群服务作为一个功能模块与SwarmKit对接。目标:
libcontainer的目标是实现容器技术的同一API;libchan的目标是在不同的网络服务之间打造一套“channel”系统(channel是Go语言中的一个概念 - 为实现并发情况下不同goroutine之间交换数据);SwarmKit的目标是提供一套组件网络服务的最小工具集。相关:
还有其他一些,如Weave创建一个虚拟网络来连接部署在多台主机上的Docker容器;Flannel为Kubernetes提供覆盖网络支持;SocketPlane试图将软件定义网络技术引入容器管理等。
官方提供
官方网站给出了很多很详尽的说明文档,还有很多官方提供的工具,如:
Docker Compose
Docker Machine
Docker Swarm
建议你到官方网站看一下,有很多很有意思的东西。
关键字:docker, 容器, 代码, compose
版权声明
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处。如若内容有涉嫌抄袭侵权/违法违规/事实不符,请点击 举报 进行投诉反馈!