本节书摘来自华章社区《Docker进阶与实战》一书中的第2章,第2.5节容器造就Docker,作者华为Docker实践小组,更多章节内容可以访问云栖社区“华章社区”公众号查看
2.5 容器造就Docker
关于容器是否是Docker的核心技术,业界一直存在着争议。有人认为Docker的核心技术是对分层镜像的创新使用,有人认为其核心是统一了应用的打包分发和部署方式,为服务器级别的“应用商店”提供了可能,而这将会是颠覆传统行业的举措。事实上,这一系列创新并不是依赖于容器技术的,基于传统的hypervisor也可以做到,业界也由此诞生了一些开源项目,比如Hyper、Clear Linux等。另外,Docker官方对Docker核心功能的描述“Build, Ship and Run”中也确实没有体现与容器强相关的内容。
尽管如此,笔者依然认为容器是Docker的核心技术之一。
首先从Docker的诞生历史上,它主要是为了完善当时不愠不火的容器项目LXC,使用户可以更方便地使用容器,让容器可以更好地应用到项目开发和部署的各个流程中。从一开始LXC就是Docker上的唯一容器引擎也可以看出这一点。所以可以说,Docker是为容器而生的。
另外,更重要的一点,跟Docker一起发展和被大家熟知的,还有叫做“微服务”(micro service)的设计哲学,而这会把容器的优势发挥得更加淋漓尽致。容器作为Linux平台的轻量级虚拟化,其核心优势是跟内核的无缝融合,其在运行效率上的优势和极小的系统开销,与需要将各个组件单独部署的微服务应用完美融合。而且微服务在隔离性问题上更加可控,这也避免了容器相对传统虚拟化在隔离性上的短板。所以,未来在微服务的设计哲学下,容器必将跟Docker一起得到更加广泛的应用和发展。
在理解了容器,理解了容器的核心技术Cgroup和Namespace,理解了容器技术如何巧妙且轻量地实现“容器”本身的资源控制和访问隔离之后,可以看到Docker和容器是一种完美的融合和相辅相成的关系,它们不是唯一的搭配,但一定是最完美的组合。与其说是容器造就了Docker,不如说是它们造就了彼此,容器技术让Docker得到更多的应用和推广,Docker也使得容器技术被更多人熟知。在可预见的未来,它们也一定会彼此促进,共同发展,在全新的解决方案和生态系统中扮演着重要的角色。