Docker十年:从机房小工具到绕不开的云原生底座

2014年我蹲在公司机房的服务器旁边,第一次敲下docker run hello-world的命令,旁边管了十年物理机的运维老周直接凑过来,盯着屏幕上跳出来的欢迎文本,撇着嘴问,这轻飘的玩意儿,能顶得住我们跑了三年的电商大促流量?

老周当时的质疑不是没有道理,那时候我们的服务器上跑着整整47台CentOS6的虚拟机,每个虚机分2核4G内存,光机器本身的硬件成本一年就要小几十万,更别说每次上线新服务,要找运维开虚机、装依赖、配网络,没有三天根本跑不起来。

被神化也被矮化的技术边界

本质上Docker从来不是什么轻量虚拟机,它的核心是三块拼起来的:靠Linux内核的namespace做视图隔离,让每个容器看起来像拥有自己独立的文件系统、网络和进程空间;靠cgroups做资源限制,不让某个容器把整台机器的CPU和内存吃满;靠联合文件系统把程序和所有依赖打成一个只读的镜像层,拉到任何地方都能直接跑。

Docker namespace与cgroups隔离机制示意图
Docker namespace与cgroups隔离机制示意图

很多早期的技术布道者把Docker吹成可以把所有虚机都扫进历史垃圾堆的终极方案,甚至算过一笔账,说每个企业能在基础设施成本上砍下来60%的开支。

别吹过头。

这种共享内核的隔离方式,从设计之初就没有达到硬件级隔离的安全等级——只要内核出一个提权漏洞,所有跑在上面的容器都可能被攻破。这也是为什么后来公有云厂商做容器服务的时候,都要叠加Kata Containers、gVisor这类安全沙箱,把每个容器套进一个独立的轻量虚拟机里,本质上就是补最初Docker的隔离短板。

绕不开的产业链默认选项

谁也没料到,当年只是个方便开发本地跑服务的小工具,最后会变成整个软件交付行业的默认标准。

我上周帮长三角一家做工业传感器的制造企业做数字化调研,他们的IT主管之前还在纠结要不要花大价钱上Kubernetes集群,聊了半小时才发现,他们采购的MES生产管理系统、WMS仓储管理系统,甚至连车间用的设备数据采集终端,所有供应商给的交付包,全是Docker格式的镜像——连个传统的exe安装包都懒得准备,更别说写适配不同操作系统的安装脚本了。

现在回头看,整个云原生产业链的起点,其实就是Docker把镜像的概念打穿了。哪怕后来OCI(开放容器倡议)把镜像格式、运行时的标准从Docker公司抽出来,变成全行业共有的开放标准,大家嘴上说的“打镜像”“拉镜像”,还是默认沿用当年Dockerfile的那套写法。

2024年全球云原生容器产业链结构图谱
2024年全球云原生容器产业链结构图谱

有意思的是,真正吃到这波红利的,反而不是最初发明Docker的那家公司。说起来也挺讽刺的,2021年Docker突然调整授权协议,要求员工数超过250人的企业使用Docker Desktop必须支付商业授权费,当时整个开发圈的反弹几乎是一边倒——我朋友圈一半的技术博主都在发卸载Docker Desktop的截图,转头切到了免费的Podman、内置在K8s里的containerd上。现在Docker公司的商业化重心早就从核心开源runtime,转到了面向开发团队的协作平台、安全扫描工具上,反而把最核心的容器运行时,变成了整个开源生态共同维护的公共组件。

公开的行业统计里,国内规模以上的科技企业,容器化率已经超过70%,传统制造、医疗、教育这些行业的容器化率,最近三年每年都保持15个百分点左右的增速。这种渗透速度,在过去的企业软件发展史上,是很少见的。

被低估的治理风险

当然,走得快不代表没有坑。

最突出的风险就是供应链安全。现在绝大多数开发者拉取基础镜像的第一选择,还是公共的Docker Hub仓库——你根本不知道那个下载量上百万的热门镜像,背后是谁维护的,里面有没有被植入挖矿程序、窃取SSH密钥的恶意代码。之前公开披露过的案例里,有个下载量超千万的开源Alpine基础镜像,被人在维护渠道里悄悄替换了带后门的版本,被拉取之后,会在后台静默把服务器的访问凭证传到境外的服务器上,等运维发现的时候,已经有十几万台服务器被入侵了。

太常见了。

国内现在没有一个完全合规、统一的公共镜像分发节点,很多企业要么自己搭私有镜像仓库,要么靠第三方的加速节点同步镜像,但是绝大多数安全扫描环节都是摆样子——开发为了赶版本上线,扫个漏洞要等二十分钟,直接点跳过就把镜像推到生产环境了。还有个更细碎的问题:同一个软件的镜像,有人基于Alpine打,有人基于Debian打,依赖的库版本差了好几个大版本,出了线上故障的时候,连本地复现环境都要搭大半天。

说实话,这种破事我这三年遇到没有十次也有八次。

很多企业现在谈容器化治理,第一反应是要上多么复杂的平台,其实最基础的问题都没解决:你推上去的镜像到底有没有漏洞?谁有权限把镜像推到生产环境?版本迭代的时候会不会把之前的旧镜像随便覆盖?这些问题不解决,容器化跑的越快,风险敞口就越大。

未来3-5年的真实走向

聊完现状,其实对接下来的行业走向,根本不需要什么天马行空的预测,顺着现在的轨迹往前推就行。

首先,Docker本身会彻底退到技术栈的最底层,变成大家天天用但是不会特意提起的基础设施。现在已经很少有开发者直接在生产环境敲docker run的命令了,绝大多数场景下,都是Kubernetes、Serverless平台在后台自动调度容器,就像大家现在上网不会特意想起TCP/IP协议一样,Docker的存在感会越来越低,但是没人能绕开它。

其次,传统行业的容器化渗透会进入深水区。之前互联网公司是第一波吃螃蟹的人,接下来制造、医疗、教育这些对数据安全要求高的行业,会把Docker镜像作为软件交付的强制标准——就像现在大家默认用PDF交付文档一样,以后供应商给客户交付软件,不会再给你一个需要在Windows上装一下午的安装包,只会给你一个能跑在客户私有云环境里的容器镜像,版本升级就是拉个新镜像重启的事儿。

最后,围绕容器的安全生态会从“可选项”变成“必选项”。之前的镜像扫描、供应链溯源、轻量沙箱这些功能,都是创业公司在做的细分产品,接下来会变成所有公有云容器平台的标配能力——毕竟哪个云厂商也不想自己的平台上,跑一堆带后门的恶意镜像。

我还记得2014年在机房第一次跑通hello-world容器的时候,旁边刚毕业的实习生盯着屏幕上的文本,说这玩意儿以后会不会改变所有软件的交付方式。

现在十年过去了。

它不是什么能颠覆世界的黑科技,也没有当初吹的那样能把所有虚拟机都淘汰。但是它真的悄悄把我们写代码、跑服务、给客户交付软件的方式,全给换了。

作者|大讲堂

排版|大讲堂

审核|柚子

免责声明:市场有风险,选择需谨慎!此文仅供参考,不作买卖依据。如有侵权请联系删除。
文章名称:Docker十年:从机房小工具到绕不开的云原生底座
文章链接:https://www.lfdjt.com/info_23_30582.html