docker与openstack、LXC的本质差别是什么? 这个问题一直困扰着我,随着对docker的认识不断深入,今天总算是有点明白,openstack是针对资源(虚拟机或容器)的管理,而docker是针对应用的管理,根据应用的“12 factors”,我们来对比docker和openstack的差异:
I. Codebase【源码】
docker:提供了基于源码的镜像制作;
openstack:镜像内部不涉及;
II. Dependencies【依赖】
docker:支持镜像依赖,实现应用对组件或平台的依赖;
openstack:镜像内部不涉及;
III. Config【配置】
docker:提供link、env特性,简化实现应用配置;
openstack:镜像内部不涉及;
IV. Backing Services【后端服务】
docker:不提供后端服务,但是应用使用后端服务配置简单;
openstack:不提供后端服务,不涉及应用配置;
V. Build, release, run【部署】
docker:提供镜像制作和运行容器,分两个阶段实现;
openstack:镜像内部不涉及;
VI. Processes【运行】
docker:提供运行容器,启动时可指定运行程序,如果运行环境参数有变,可通过指定参数解决;
openstack:提供运行虚拟机,需要在虚拟机内部指定自启动服务,如果运行环境参数有变,需要登录虚拟机后重新配置参数;
VII. Port binding【绑定端口】
docker:支持;
openstack:不支持;
VIII. Concurrency【扩容】
docker:不支持
openstack:不支持
备注:一般需要上层系统提供
IX. Disposability
docker:启动、关闭容器快速;
openstack:与docker相同;
X. Dev/prod parity
docker:提供镜像管理,同时支持在启动应用时指定参数,保证开发、测试、商用时环境基本一致;
openstack:提供镜像管理,但是不支持在启动时指定应用参数;
XI. Logs【日志】
docker:提供stdout和stderr导出功能,提供cp功能拷贝容器内部的应用日志文件;
openstack:不支持;
XII. Admin processes
docker:支持;
openstack:支持;
结论: 从“12 fators”分析可以说docker提供了非常简便的应用管理能力!