杨峰 译 分布式实验室
Linux容器技术最近几年发展迅速,从最初的互联网公司的实验技术发展成为分布式应用事实上的标准。Docker资深副总裁Marianna Tessel说,这项技术可以支持多容器,多主机应用,并且从Linux世界扩展到Windows世界,因而变的越来越复杂。
Docker,也在试图从商业和开源两种方式满足不同客户端需求。
Tessel说,“Docker开始是作为一种开发工具,现在为了满足用户的需求演变成了生产中的容器技术”。
Docker也参与了开放容器项目,一个Linux基金会项目,来创建一个容器工业标准。
那么对于容器技术来说,下一个方向会是什么呢?Tessel在2015年8月17-19日的LinuxCon大会上做了相关的主题演讲。其中她讨论了容器的现在,演变过程以及开放容器项目会在接下来几个月或者几年中扮演的角色。
Linux.com:容器技术的现状是什么,成功和不足分别是什么?
Marianna Tessel:短期内,容器技术正在快速改变着公司和用户创建,发布,运行分布式应用的方式。容器技术改变了开发者的能力,对于公司来说,投入产出比大大提高。
有几个例子:例如ING这类公司可以通过使用Docker达到快速扩张的能力。ING的案例中,过去的代码是一体式应用模式(monolithic application),迭代周期是以月为单位;而现在由于采用了docker技术,迭代周期则下降到了每15分钟一次,也就是一天大约300次更新。其它组织使用容器技术将传统架构转化为更加灵活的微服务模式(microservices )。Booz Allen正在和大型*代理机构合作,为应用开发团队开发一个安全DevOps框架,因为他们正在面临将传统应用转向为云端分布式应用的转变。这些应用主要用于管理*的系统,例如奖惩、管理或者联邦财政资助合同和*间交易等。为了创建统一开发体验,提供统一工具和内容,这家大型*代理商正在使用容器技术将这些应用转型为微服务。
容器技术最大的挑战也许来自于快速的采用率,如此之快以至于超出所有预期,因此需要容器的生态环境也快速迭代。用户和组织希望找到一种跨越开发周期的无缝维护经验。随着应用越来越复杂,容器技术也越来越多的被采用,生态环境也快速演进,提供更多的工具和选项,例如网络、存储、监控、等等。
对于容器来说,安全仍然是个问题吗,为什么?
Tessel:不应该说容器的安全,而应该说应用的安全。容器技术通过将应用与主机和其它应用隔离,来提供另外一个层次的保护,通过这种隔离可以不直接使用底层架构的资源,减少从主机层面受到***的可能性。Docker的实现就是通过协调和利用一个接口,给众多Linux核心安全提供安全接口。容器的安全特性被很好的认可,以至于像Capital One这样的银行机构也采用容器作为关键业务承载技术。
安全会持续成为创新的主题。随着应用不断改变,最好的应用安全方法也需要不断演进。Docker的安全能力也不断演进,从开发工具成为构成生产环境复杂方案的技术。Docker Notary被设计成容器分布式和生产阶段与Docker相关内容的过滤器,这样,只有通过数字认证并且进入Notary注册系统的内容可以进入生产领域。容器用户也需要确保他们使用业界最佳实践进行开发工作。 Docker Bench for Security 工具是一个很好地工具,可以将主机配置自动与CIS推荐指标进行验证。
最近几年容器技术如何改变?
Tessel:容器技术在过去几年中无论深度还是广度都有长足发展,变成创建,发布和运行分布式应用的事实标准。容器技术刚开始作为开发工具,慢慢演变成具有很多功能和能力的部署于生产系统的容器技术。容器演变的很复杂,并且被广泛采用,从管理单一容器应用到管理多容器,多主机的分布式应用。结果,这种采用容器技术的用户很快就超越了初始网络公司的范畴。更多的使用场景和用法出现,例如“Container as a Service”和大数据分析应用。最终,容器技术最重大的改变之一,就是多平台支持,从Linux、Solaris到Windows平台。
新的 Open Container Project 组织会在容器技术中起到什么作用?
Tessel:容器用户如今可以不用担心,他们的特定架构(包括云平台,开发工具等)选择会将他们锁定在某个特定技术提供商。 他们可以集中于选择最佳工具来开发最佳应用,同样重要,他们可以从业界不断创新中受益,只要专注与自己的应用就可以使得自己与众不同。最终,OCP组织会确保他们最初的承诺:使得容器技术更轻便,互操作性更强和更好的敏捷性,使得我们未来的应用可以使用更广泛的工具,跨越更多的架构。
Docker将会为此新合作计划提供什么?
Tessel:Docker正在将一个基础格式草案指标和运行时与此相关实现指标代码捐赠给了OCP。Docker承担了所有 libcontainer project (github/docker/libcontainer,包括nsinit)的内容和所有使得与Docker无关运行的内容,并且也捐赠了这部分内容。这部分代码,叫做runC,可以从 github/opencontainers/runc下找到。libcontainer作为一个独立的项目将会停止运作。Docker也会与CoreOS、RedHat和Google一样贡献维护者,以及两个独立的开发者。