Docker于 2013年推出以来,给软件开发带来了极具传染性的振奋和创新,并获得了来自各个行业、各个领域的巨大的支持——从大企业到初创公司,从研发到各类IT人员,还有开源社区、ISV、最大的公共云供应商、软件堆栈上的每个工具等。自Docker推出以来,许多重大的里程碑事件都推动了容器革命。让我们就其中一些作个简要回顾。
容器编排工具的选择
容器入门非常简单。所需要的仅是笔记本电脑和Docker客户端。然而,运行微服务应用程序则要另当别论。其中最困难的是创建、管理和自动化临时容器集群。
解决这一挑战的第一个主要工具是Mesos及它的编排工具Marathon。即使在Docker之前就已经提供了分布式基础设施,Marathon也可以在Twitter和其他大型Web应用程序中的生产工作负载中使用。
下一个得到广泛认同的编排工具是Kubernetes。事实上,如今Kubernetes因为它的可扩展性已经领先于Docker编排工具。它支持广泛的编程语言、基础设施选项,并获得容器生态系统的巨大支持。它将应用层与基础设施层隔离开来,从而能够跨多个云供应商和基础设施设置,实现真正的可移植性。
Docker Swarm随后也加入了容器编排领域,并且其覆盖率已经迎头赶上。Swarm很容易上手,并且能与Docker平台的其他部分很好地集成。初步迹象表明,这一竞争已经改变了Kubernetes。
对企业而言,编排工具是容器应用成功的关键。尽管这三个选择都不差,但您应该根据您的需求做出最合适的选择。
容器安全快速发展
在初期,容器默认的隔离性较弱。随着时间的推移,这一情况正在发生变化。与容器安全相关的一个关键进展,是出现了多个能力强大的容器 registry。registry通过存储和扫描容器镜像和存储库来发现漏洞。这是Docker安全性的重要组成部分,因为未经验证的发布商提供的公开存储库,极容易带来安全威胁。这也是开放的生态系统的缺点之一,因为在开放的生态系统中,镜像很容易共享。但使用 registry进行安全检查可以减少这种风险。
Docker Hub是大多数Docker用户开始使用的默认registry,也是目前最流行的。主要的IaaS提供商都有自己的registry。这很有必要,尤其是如果您大量投资AWS、Azure或Google Cloud。它们具有默认的存储库扫描功能、更成熟的访问控制,以及一系列用于联网、存储和监视的其他工具。除此之外,像Quay和GitLab容器 registry这样的第三方 registry也越来越受欢迎。registry的选择比编排工具多得多,市场也很开放。
除了 registry之外,TwistLock和Aqua security等第三方容器安全服务商也提供了超出默认值的安全性。
适用于Windows和Mac的原生Docker客户端
Docker最初是一种基于Linux的技术,它依赖于Linux内核中内置的特殊功能(这些功能只能在Linux上可用,而非其他类似Unix的内核)。如果要在Windows或Mac上运行Docker,则必须使用虚拟机引擎(如VirtualBox)和基于Linux的虚拟机来托管Docker环境。对于那些想在Windows或Mac机器上测试Docker应用程序的开发人员来说,这个设置非常方便,但作为Docker服务器部署解决方案却不实用。
2016年初,随着原生Docker对Windows的支持,情况发生了变化。这是一项重大进展,因为许多企业工作负载在Windows Server上运行。在这些环境中使用Docker的需求很强劲。
目前, Docker在Windows上本机运行时,仍存在一定局限性。网络尚未完全实现,仅支持Windows Server 2016和Windows 10。但是,Docker已经支持原生Windows,这一进展已经为Windows生态系统中的Docker提供了大量的新机遇。
内置VS开源Docker组件
Docker公司已经建立了企业版(包括Docker Datacenter,它现在已经集成到Docker的新企业版平台中),它们由Docker本身的组件组成,其中包括Swarm管理器,而Docker Engine并未内置这些组件。Docker对使用自己的工具来建造容器堆栈更感兴趣,而不是与容器生态系统中的其他组织合作,最初引起了一些人的担忧,即Docker将忽略社区标准。去年八月份,出于这方面的担忧,他们甚至还谈到了forking Docker。(不过至今并没有谁真的fork了Docker。)
最近,随着Docker采取措施向客户保证它不会垄断行业,这种紧张局势已经平息。它对CNCF的积极贡献,包括最近将底层的容器技术开源,都是朝这个方向发展的。在上个月的DockerCon大会上,该公司通过将代码转移到Moby项目,并引入LinuxKit,从而使它的主要项目更模块化,更便于社区访问。(这里分析了这些变更对Rancher Labs、Rancher产品以及各种各样用户的影响)
当然,Docker仍然有批评者。但相比一年前,Docker技术栈明显更加开放,并能与其他生态系统更好地集成。
结论
容器生态系统仍然在不断发展与改变。也许当我们刚弄清楚Docker对于跨所有类型组织的应用程序意味着什么时,新的标准又出现了。本文所强调的趋势是一个快速成熟的生态系统的指标。最值得关注的,是在这一领域中,Docker和各个供应商是如何进步,以推动容器生态系统的发展的。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。