ocker 是 PaaS 提供商 DotCloud 开源的一个高级容器引擎,源代码托管在 Github 上,基于Go语言并遵从Apache2.0协议开源。Docker相当于物理行业的集装箱对物流的影响一样,成为Container上运行镜象的统一打包和交换的标准。

Docker与Openstack
从目前来看,Docker集成到OpenStack的方案主要有下面三种方案。主流观点认为基于Nova调度和管理Docker容器不能发挥Docker的优势,而把Docker与Heat集成更能发挥其优势。

Docker Driver for Nova通过nova-api,docker driver作为hypervisor部署。原理很好理解,nova-computer-api调用virt api 将nova docker driver作为http agent和docker rest api互通,从而控制docker和与容器的通信。另外,glance作为docker register服务的本地节点,提供image服务。这种方式不支持Docker的一些高级特性。
Docker Plugin for Heat通过Heat组件来实现。利用heat来管理docker的资源模板,这样可以避免nova仅仅在hypervisor层面对docker管理的限制,比如一些docker本身构建的能力,或是docker容器之间的网络管理等。这种方式能够充分利用Docker的API,但缺乏quota、 host aggregate 调度机制,不能用Glance来管理镜像。
Docker与DevOps
基于Docker可以更好的实现DevOps。虽然有许多工具适合DevOps部署,使开发人员和操作更贴近,但Docker是一个与DevOps原则密切相关的框架。使用Docker,开发人员可以专注于他们的代码,而不必担心在生产环境中运行它们的负面影响。

DevOps团队可以将整个容器作为容器处理,文件系统和依赖关系管理的分层方法使得环境的配置更容易维护。在相同的源代码控制系统(如Git工作流程)中版本化和维护Dockerfiles使得它非常有效地管理多个开发/测试环境。不同环境的多个容器可以在同一VM上运行时被隔离。Docker还可以很好地使用现有的工具,如Jenkins,Chef,Puppet,Ansible,Salt Stack,Nagios和Opsworks。
Docker有可能对DevOps生态系统产生重大影响。它可以从根本上改变开发人员和运营专业人员合作的方式。新兴DevOps公司,如CloudMunch,Factor.io,Drone.io可能必须采用Docker并将其带入他们的CI和CD解决方案。
Docker与微服务架构
基于Docker容器和其生态系统的微服务架构是下一代PaaS的核心,在Docker出现之前,虽然我们谈论微服务架构,但是其实是很难实现的。微服务要运行,首先需要一套执行的环境。这套环境不能对外部有依赖性。同时,执行环境的粒度又必须足够的小,这样才能称之为”微“,否则必然是对资源的巨大浪费。一个微服务可以跑在一台虚拟机上面,但是虚拟机粒度太大,即使最小的虚拟机,也至少也有1个核。服务一个用户的服务,显然用不了一个核。同时,虚拟机有没有一套方便的管理机制,能够快速的让这些服务之间能够组合和重构。
Docker出现以后,我们看到了微服务的一个非常完美的运行环境。一个容器就是一个完整的执行环境,不依赖外部任何的东西,具备独立性。一台物理机器可以同时运行成百上千个容器,粒度细。其计算粒度足够的小。容器可以在秒级进行创建和销毁,非常适合服务的快速构建和重组。数量众多的容器编排管理工具,能够快速的实现 服务的组合和调度。
目前围绕Docker已形成庞大的生态系统,涵盖编排/调度、容器/OS、应用部署、网络/SDN、Hosting/SP、Big Data、配置管理工具、开发工具等。

互联网厂商/云服务商加入Docker生态圈,在容器部署、管理、编排等领域发力,抢占容器集群管理的标准控制权,积极部署Container和仓储服务,打造基于各自云服务的应用生态体系。

Docker将催生云计算服务标准化,可以在系统的构建者和使用者之间划出一条清晰的界限,将IT系统的交付标准化。譬如游戏的开发商可以交付标准化的服务给游戏的发行商,发行商在不依赖开发商的情况下能够独立运营系统,或者交由第三方运营系统。
Docker Hub为组件/系统提供商建立了一个部署到Docker 上的生态、App Market 环境。个人应用的普及依赖公有仓库,企业级应用普及依赖私有仓库。为私有容器提供安全、高速访问和多云联通。
Docker的挑战者Rocket
CoreOS 使用 Docker 容器构建其服务,并对 Docker 项目做出巨大贡献。但2014年CoreOS宣布正在开发自己的容器引擎Rocket ,因为其不同Docker 的发展方向。CoreOS在 Docker 早期时候认为 Docker 在为开发人员提供一个标准的容器架构,简化了开发人员的日常工作。后来发现 Docker在获得很多资金后的使命已经扩张太多,现在不是在谈论 Docker 容器,而是 Docker平台。

Docker的Roadmap表明旨在想要构筑一个完整的Docker平台,包括Machine (系统配置)、Swarm (Docker 化应用的原生集群)、Compose (多容器应用组装)。





