如今Docker的使用已经非常普遍,特别在一线互联网公司。使用Docker技术可以帮助企业快速水平扩展服务,从而到达弹性部署业务的能力。在云服务概念兴起之后,Docker的使用场景和范围进一步发展。今天,就让我们来看看关于Docker的深度问答。
1
Q:Docker的架构
A: 从下图,我们可以看到,容器由于省去了操作系统,整个层级更简化,可以在单台服务器上运行更多的应用,而这正是IaaS所需要的,可能5G右的空间,对你来说不是什么大事,但是如果你需要对外提供成千上万的主机,那就是不得了。
普通虚拟机将整个操作系统运行在虚拟的硬件平台上,进而提供完整的运行环境供应用程序运行,而Docker则直接在宿主平台上加载运行应用程序.本质上他在底层使用LXC启动一个Linux Container,通过cgroup等机制对不同的container内运行的应用程序进行隔离,权限管理和quota分配等每个container拥有自己独立的各种命名空间(亦即资源)包括:PID进程, MNT文件系统, NET网络, IPC, UTS主机名等。
2
Q:CaaS:容器即服务
A:目前,已经有一些新兴公司,以有些类似IaaS的方式,提供容器服务(Containers as a Service)。长远来看,也许CaaS的这种模式的出现,会使跨IaaS平台的动态调度容器、移动容器成为可能。就像IaaS的客户不需要关心其虚拟机的实际品牌一样,CaaS的客户也不需要关心他的容器到底是运行在AWS还是阿里云上。客户将会自己选择期望的地理位置,以及他们想要的容器运行,然后CaaS服务商将提供自动化的程序帮助进行资源调配,帮助客户选择最便宜的或最合适的公有云平台。
尽管这种在IaaS之上提供Docker容器的商业模式仍待讨论和观察,但Docker已经取得了巨大的影响力,如果Docker今后能在更多的企业,特别是企业的实际生产环境中发挥作用,我们认为CaaS同样是可以期待的。
3
Q:对IaaS厂家的影响
A:从创业公司到IT巨头,每一家公司都已经意识到或者逐渐意识到基于硬件的虚拟化的所为企业带来的益处。公有云厂商,如AWS、Azure所提供的IaaS服务更多越来越像水、电、煤等公共服务。而Docker的出现,则便于这些IaaS厂商提供更细粒度计算资源,进一步提高资源利用率,缩短资源开通时间,进而为进一步压缩公共云服务的成本提供了可能。对于如负载平衡、缓存和防火墙这些其他的IAAS的提供的服务而言,也可通过将其迁移到容器中,以提供更好的可移植性。
同时,对于混合云而言,VMware vCHS(vCloud Hybrid Service)和微软 Azure都在各种强调自身VM的可迁移性。而事实上,由于容器相比传统的VM更轻量,Docker容器可以动态地设置和迁移。从资源的利用率和可用性的而言,Docker是非常适合部署在混合云中,并能够更好的发挥混合云的能力。
4
Q:对PaaS厂家的影响
A: 相比于IaaS,PaaS实际上起步更早。PaaS的初衷最是为了帮助开发人员实现够资源的自动调整,而不必面对IT基础设施管理的问题。早些时候,人们曾经预计PaaS将超越 IaaS,成为云计算领域中增长最快的市场。但几年后,由于Amazon在IaaS领域的巨大成功,使得早期的PaaS玩家,如Microsoft和Google意识到,IaaS相比PaaS而言,壁垒较低,更容易取得市场的认可。所以现在Microsoft和Google除了在原有的PaaS领域外,在IaaS领域也和Amazon展开了激烈竞争。
就PaaS而言,PaaS厂商希望提供规范、一致的环境,而企业应用,无论是从开发、管理还是运维上都有各种个性化的需求。二者之间这种很难克服的冲突阻碍了市场的对PaaS的认可和接受。另外,每一PaaS厂商都在为应用提供各自的服务和API,这就造成了应用在PaaS厂商之间的移植是很困难的。一些组织在PaaS的迁移方面做了积极尝试,甚至希望能实现跨云服务提供商的迁移。但是由于没能得到类似Google App Engine和Microsoft Azure这样的厂家支持,目前这些工作还还很难成为事实上的行业标准。
Docker的出现使PaaS以更简洁的方式为开发者提供服务成为了可能,Cloud Foundry目前也开始支持并集成Docker容器。有了Docker,开发人员不再需要为处理各种开发、 测试、生产环境的差异而花费大量精力,他们可以将一个干净的开发环境直接迁移到生产环境,而不必担心各种依赖和配置问题。这有效的解决了开发者经常面临的“依赖陷阱”。开发者不再需要为了使应用能够在PaaS中运行而学习额外的编程方式,他们的应用不需任何调整就可运行在Docker容器中。同时,Docker出现之后,开发者越来越多的考虑以Micro Service(微服务)的方式来实现他们的应用。长远来看,Docker将会使PaaS更易管理,更快地提供服务。
总体上说,Docker已经对仍在不断变化、演进的PaaS市场产生了影响。但这种影响究竟会加速PaaS的演进,打乱PaaS的演进,还是兼而有之,目前言之尚早。尽管目前还不是非常成熟,但Docker通过容器级虚拟化的方式,仍为乐于尝试的企业提供了一个解决环境依赖和可移植性问题的方案。
5
Q:容器对传统ISV的影响
A:对于传统ISV而言,在整个SDLC(Systems Development Life Cycle)环节中引入Docker,可能会成为一种趋势。Docker的引入,除了在ISV内部的开发、测试中会极大的解决配置依赖等问题,进而提升整体效率。 我们认为,以容器为核心的持续集成和持续交付,最终将容器作为ISV向客户、向客户的云平台交付的实体,对于ISV及其客户而言,都会有很大的效率提升。
虽然目前,我们不清楚究竟是更多的ISV向其客户推荐了Docker,还是更多客户要求ISV基于Docker进行开发,还是两种可能都会有。但我们相信,Docker在企业应用市场,类似之前的VMware,会得到广泛应用。