
1. 开源的第一桶金从dotCloud备胎到全球开发者的默认工具1.1 为什么一个PaaS失败项目的内部工具能火成行业标准2013年Docker刚开源那会儿背后的公司还叫dotCloud做的是PaaS生意——让开发者把应用直接扔上去跑的那种平台。那门生意做得很辛苦市场不买账公司眼看就要在云计算大潮里无声无息地消失。Docker最初只是他们内部用来管理容器的一个小工具解决的是“开发环境能跑、生产环境跑不起来”这种让人想摔键盘的老问题。结果这个内部备胎开源之后反而以肉眼可见的速度席卷了技术圈镜像构建、一键启动、环境隔离、交付一致每一样都精准踩中开发者的痛点。那时候业界还在被“配置地狱”折磨。你写好的代码在本机跑得欢部署到服务器就开始表演各种玄学少个依赖、版本冲突、环境变量没配、操作系统底层库对不上。Docker把应用和它的运行环境打包成一个标准镜像任何人拿到这个镜像用同一套命令启动得到的就是几乎一致的环境。这个“一次构建处处运行”的体验在2014到2017年之间几乎成了DevOps的标配信仰。我自己也是那个阶段入坑的第一次用docker run -it ubuntu:14.04 bash的时候那种“原来环境问题可以这样根治”的震撼现在都还记得。Docker能火起来开源的功劳要占一半以上。闭源软件再牛也很难在短短两三年内成为事实标准——因为没人敢把自己的基础设施押在一个看不见代码的黑盒上。开源意味着你可以审计、可以改、可以二次分发也意味着社区可以一起补洞、一起加功能、一起传播。于是Docker借着Github的星标、技术大会的演讲、博客和视频的病毒式传播迅速把自己变成了“容器”这个词的代称。很多人在那个时期甚至形成了条件反射容器DockerDocker容器。这是开源的威力也是后来一切问题的源头——它让Docker在用户心智中成了公共基础设施。而公共基础设施最大的特点就是大家都在用但没人觉得自己应该为一颗螺丝钉付钱。1.2 用户心中的免费人设搜索热度与付费意愿的错位你去看各个平台的热搜词和搜索联想会看到一个特别有意思的现象围绕Docker的高频词几乎清一色是“安装”“启动”“下载”“配置MySQL”“青龙”“Redis主从”这些实用主义的关键词。大家搜索Docker不是为了研究它的商业模式也不是为了了解它的企业版功能而是想尽快把它跑起来、用上、然后省事。这说明在大多数开发者心里Docker就是一个“装了就能用的免费工具”和下载一个文本编辑器、装个解压软件没有本质区别。这种认知不是凭空来的。Docker从开源第一天起就选择了“先让全世界的开发者用起来”的策略。个人使用免费、社区版免费、文档免费、教程满天飞连官方镜像仓库都能免费拉取海量公共镜像。这套打法在获客上无疑是成功的Docker成了有史以来渗透率最高的开发工具之一。但硬币的另一面是用户对它的价格预期被牢牢锁定在了“免费”这两个字上。我在不少技术社群里观察到一个规律如果一个工具从一开始就免费、且大家习惯了白嫖那么就算后来它遭遇财务危机用户的反应往往不是“我们应该支持下它”而是“你怎么敢突然提钱”这不是道德问题而是心理账户问题。开发者的“免费工具”认知一旦形成再想把它切换成“付费产品”难度不亚于把公共厕所改成收费厕所——哪怕收费理由再正当骂声也会先把屋顶掀翻。Docker后来的商业化困境本质上从它开源爆红的那一刻就埋下了。开源带来的是空前成功成功定义了公众期待而公众期待又成了商业转身的围墙。这堵墙看不见摸不着却比任何竞争对手都难突破。2. 资本与社区的拔河CE/EE拆分、Desktop收费与信任透支2.1 2017年的转弯从技术布道到企业级销售如果翻开源历史2017年是一个绕不过去的节点。那一年Docker已经不只是技术圈的小众玩具而是几乎所有互联网公司运维简历上的必备词。但开源项目背后的公司账面上并不好看——用户量巨大收入却远配不上估值。资本没有耐心等一个“全人类免费平台”慢慢长成它需要看到真金白银的变现路径。于是Docker开始拆分产品线社区版CE继续免费企业版EE卖订阅、卖支持、卖安全合规。这个策略本身不算错——开源界的老前辈们都是这么玩的免费社区版负责圈地付费企业版负责收割。问题是Docker所在的赛道太特殊了。它的用户是开发者而开发者的特点是极擅长“用脚投票”和“自己动手丰衣足食”。你今天在社区版里砍掉一个功能明天就有人在Github上开源一个替代品、写一篇“如何免费实现同样效果”的教程。更要命的是Docker一边推企业版一边还要维持社区热度。可是社区贡献者不是傻子他们很快发现自己辛辛苦苦帮忙测bug、写文档、提交PR最后收益最大的却是公司股东。开源社区是靠“互惠”和“共同利益”维系的一旦这种默契被商业动机打破贡献者就会用冷漠投票。我认识的一些早期Docker contributor后来都转向了Kubernetes、containerd、Podman这些项目——倒不是因为他们不爱Docker了而是因为那个社区的氛围变了从“我们在创造历史”变成了“我们在给一家公司打工”。2.2 Docker Desktop收费公告一次公开的信任透支2021年8月底Docker宣布对Docker Desktop收费对象是员工超过250人或者年收入超过1000万美元的公司。个人、教育机构、小微企业继续免费。这条消息出来之后开发者社区炸了锅。一时间Github issue区、Reddit、推特的愤怒发言铺天盖地有人说“我用了十年Docker今天才知道原来我是白嫖党”有人说“Docker这是杀鸡取卵”还有人连夜研究Podman迁移方案。平心而论Docker Desktop收费这件事从企业经营者角度看不是毫无道理。Docker Desktop是他们在桌面端提供的图形化管理界面内置了虚拟机、文件共享、端口转发、Kubernetes集群支持这些功能不是天上掉下来的养着那么多工程师、买着苹果和微软的开发者授权开源免费版本背后的成本需要有人买单。而且收费对象精准切在企业头上个人开发者基本上不受影响。从商业逻辑上说这是一套相当标准的Freemium模型。但为什么社区反应这么激烈因为大部分开发者根本不关心自己公司的规模和营收他们关心的是“我习惯用的工具要开始管我要钱了”。而人的大脑处理信息时有很强的“损失厌恶”失去一个本来免费的东西比本来就要付费的东西贵十倍更让人痛苦。Docker Desktop收费相当于在一个所有人默认免费的领域里突然立起一扇收费闸机。哪怕你明确说“你们小公司和个人不收费”恐慌还是会蔓延——“今天不收费谁知道明天会怎样”这不仅仅是价格问题更是信任问题。当一个开源起家的项目开始对企业批量收费时社区会本能地把它重新归类为“商人的工具”而不是“我们的工具”。这种信任的流失会让用户开始寻找替代方案哪怕替代方案用起来更麻烦人们也愿意为了“不被绑架”而付出额外成本。2.3 出售企业业务开源项目撑不起“企业版”的叙事2023年11月Docker公司做了一件让很多人唏嘘的事大幅裁员然后把企业级业务Docker Enterprise卖给了Mirantis。这意味着什么意味着Docker公司自己放弃了一条坚持多年的商业化主线——向大企业销售自研的商业软件和服务。回头看看从2017年推出企业版到2023年卖掉这块业务中间只隔了六年。这六年里Docker遇到的是一个极其冷酷的现实用户规模巨大但企业的付费意愿并没有想象中那么高。为什么呢因为Docker的核心能力——容器运行时和镜像打包——说到底是一个“开关般简单”的底座。它不像Oracle数据库那样企业一旦用上就被SQL语法、存储过程、管理工具链深度绑定很难换。也不像Salesforce那样数据全在人家平台里换一次系统要脱层皮。Docker的镜像格式是公开标准容器可以被其他运行时无缝接管甚至连Docker Compose这种编排方式也慢慢能被人用其他互操作工具读取。用户不是不能走只是暂时懒得走习惯和惯性才是Docker最核心的护城河而不是什么技术锁死。一旦护城河只有“习惯”这么浅企业面对你开出的高价时心里就会同时冒出两个念头。第一念头是“这功能我用免费的社区版也能实现八成为什么要买企业版”第二念头是“如果哪天你们涨价涨得离谱我大不了组织团队花两个礼拜迁移到Podman或者containerd环境反正镜像照样用。”这种“随时能走”的底气让Docker在商业谈判桌上始终握不住定价权。卖掉企业业务本质上是一次承认开源项目带来的海量用户基础并不等于企业订阅的付费基础。Docker积累了可能是世界上数量最大的开发者用户群却没有把这些用户转换成等量的商业价值。而那些真正赚到钱的开源公司靠的往往不是“用户多”而是“不可替代的粘性”和“跑不掉的部署链路”。3. 把地基捐出去之后Docker还剩下什么3.1 OCI与containerd亲手把技术底座交给公共机构很多人不太注意Docker历史中几个看似平淡、实则影响深远的决定2015年前后Docker牵头成立了OCIOpen Container Initiative把镜像格式和运行时标准开放出来后来又陆续把核心组件runC和containerd捐给了CNCF基金会。这些操作从当时的语境看是为了避免“容器标准被一家公司垄断”的舆论压力也是为了让企业客户放心“你们不用担心被single-vendor绑架技术标准是开放的。”但站在今天回望这些决定对Docker公司来说几乎是一场战略上的“自我献祭”。你想想看一家公司的核心资产如果被一个中立基金会托管、且所有竞争对手都可以免费实现那么这家公司就丧失了对底层技术的独占权。就像你花了大几年心血修了一条高速公路然后宣布这条路属于所有人、不收一分钱过路费。后来路边的服务区、加油站赚得盆满钵满你作为修路人却只能在路旁卖几瓶矿泉水。当然我这么说并不是认为Docker当年捐错了。事实上如果不开放标准容器产业可能根本不会以如此快的速度成熟Kubernetes、云原生生态、各行各业的容器化改造都会晚好几年。开放标准本身是伟大的但不意味着对股东友好。Docker的处境恰恰说明了一个残酷规律在一门新技术从“繁荣”走向“标准化”的过程中始创者往往只能收割早期红利后期的大头利润会被更上层的应用和平台吃掉。3.2 Kubernetes打败Swarm价值从运行时上浮到编排层Docker曾经在自家产品里内置了Docker Swarm用来做容器编排。2016、2017年那阵子Swarm和Kubernetes之间的竞争极其激烈。当时很多人觉得Swarm更简单、更易于使用而Kubernetes太复杂、学习曲线太陡。但后来的结果我们都知道了Kubernetes在社区支持、生态系统、云厂商背书三方面全面碾压SwarmDocker公司最终只好在2017年宣布原生支持Kubernetes等于承认了这场编排战已经输了。这个胜负手直接决定了Docker公司在商业版图中的位置。在容器技术栈里底层的运行时和镜像打包只是“地基”而真正决定基础设施成本、弹性伸缩、跨集群调度的是上层编排系统。谁控制了编排层谁就掌握了云原生时代的入口。Kubernetes胜出之后Docker被压缩成“容器运行时”这一小段虽然还是大家都用但就相当于整个高楼里的一个小零件价值自然被上层吸走。从技术趋势上看这是一个经典的“价值上浮”过程最早Docker解决了“环境一致性”问题价值就在Docker后来规模化和调度成为新痛点价值就转移到了Kubernetes再后来连Kubernetes都嫌自己太麻烦价值又向云厂商提供的托管服务EKS、ACK、GKE上浮。Docker作为曾经的创新起点反而被固化在“提供镜像和容器”这个不再性感的环节。这是整个技术栈的自然演化但落在单家公司头上就是“眼看它起高楼眼看它宴宾客眼看它楼被拆”。3.3 Podman与containerd站在OCI标准上的“合法替代品”最让Docker公司头疼的竞争对手不是Kubernetes这种“不同维度”的对手而是那些基于同一套开放标准、专门做“Docker替代品”的项目。比如Podman口号直接就是“daemon-less Docker”。它兼容Docker命令、能直接构建和运行Docker镜像无需守护进程安全性还更好。很多人从Docker迁移到Podman只需要把docker命令替换成podman剩下的基本不用改。再比如containerd它本身就是从Docker里拆分出来的核心组件如今是Kubernetes默认的容器运行时几乎每个Kubernetes节点都在跑containerd可能连Docker正式版都不需要装。这种局面就是Docker当年轻易交出标准的直接后果它的技术底座成了公共品谁都能合法地在同一块地基上盖自己的楼。每当Docker公司想通过某个新功能赚钱社区很快就能基于开放标准造出免费替代每当Docker Desktop对某些用户收费Podman Desktop就趁机补位。用户当然有惰性不想花时间换工具但当他们觉得自己“被不公平对待”时这种惰性就会被愤怒瞬间击穿。有人可能会问“那Docker至少还有品牌和生态啊为什么不能靠这些守住阵地”问题在于开源世界的品牌忠诚度是很脆弱的。开发者对“好工具”的忠诚远高于对“某个公司产品”的忠诚。Docker最伟大的成就就是把“容器标准”变成了公共常识但这个常识一旦普及人们就不再需要Docker本身来获得这份便利。就像第一个发明电灯的实验室已经没人记得但每家每户都用上了电——如果这家实验室后来想靠“你用了电就得给我钱”来收费恐怕只会被认为疯了。4. 同为开源为什么Red Hat活得好Docker却差点把公司搭进去4.1 开源不是原罪分层才是光环为何只在体验层管用提起开源公司的商业困境很多人第一反应是“开源不赚钱”。但Red Hat的例子就摆在眼前Red Hat是开源界的商业奇迹被IBM以340亿美元收购。同样是开源Red Hat的Linux操作系统的用户量也极其巨大为什么它就能靠订阅服务活几十年因为Linux这门生意处在IT基础设施的最底层企业一旦大规模部署就需要有人负责安全补丁、技术支持、合规审计、内核调优。这些需求不是工程师个人能用免费社区版解决的而Red Hat正好提供了“你搞不定的那部分”的付费方案因此企业愿意付钱。Docker呢它的核心能力是“打包和运行容器”这件事的复杂度远低于操作系统级运维。大多数使用者只要跑通几个命令、写好一个Dockerfile就完事了根本不需要外部技术支持。你可以说Docker把“复杂”隐藏得太好了好到用户觉得自己根本没什么理由为此付费。功能简单替代容易支持需求低——这三板斧下来开源公司最经典的服务付费模型就失效了。换一个更直白的说法开源项目的商业价值往往不在于“代码本身”而在于“围绕代码的那些麻烦”。Red Hat卖的是“解决麻烦”Docker想卖“体验便利”但“体验便利”在用户心里是标准配置而不是增值服务。这个定位差异决定了同样是开源的先行者一个能在Capex与Opex的预算里堂而皇之地签下订阅合同另一个却只能靠社区捐款和风投输血续命。4.2 那些成功收费的开源公司都守着“非开源不可”的护城河再来看另一类开源公司Elastic、MongoDB、Confluent。它们也都开源也都走“核心开源付费增值”的路线但至少在某一个时期内它们的商业故事讲得比Docker通顺得多核心原因是它们守住了数据的入口。企业如果用Elasticsearch做日志分析那么日志数据、查询索引、监控大盘全都沉淀在它的技术栈里如果用了MongoDB业务数据的存储格式和查询路径就跟它深度绑定。要迁移不是不行但代价和风险非常大所以企业用户在评估订阅服务时天然有“别把这摊事搞砸了”的心理预期付费意愿自然更高。这里还能看到一个更深层的东西那些开源项目之所以被企业选用恰恰是因为“最初的一个决定”会在后续日子里不断放大。比如数据库一旦存了海量生产数据你就别想随便换了因为换数据库本身就是一场灾难级工程。Docker可没有这种“甜蜜的枷锁”。你今天可以不用Docker明天可以换Podman反正镜像格式大家都认。它更像是一个“入口”工具用完即走不会沉淀数据也不会绑定业务逻辑。而“用完即走”这四个字在商业世界里等于“没有留客能力”。当然MongoDB和Elastic后来修改开源许可证SSPL/Elastic License在社区里也引起了巨大争议。这说明一个道理任何开源公司到了一定阶段都会因为“想收费”和“用户不想付钱”之间的矛盾而焦虑。但它们的焦虑还可以通过对数据、对企业核心资产的掌控来对冲Docker的焦虑是赤裸裸的——它想收费却连一个让人“走不掉”的理由都找不到。4.3 Docker的症结锁不住数据锁不住协议只锁住了习惯我这些年分析过不少开源商业化案例最后发现判断一家开源公司有没有商业护城河只要问三句话就够了用户走了会丢掉数据吗用户走了会违反协议吗用户走了需要重写核心系统吗如果三个答案都是否那么这家公司的付费用户大概率只会停留在“情怀支持”的层面。Docker恰好就是三个“否”的典型。容器镜像可以无损迁移到其他运行时数据基本都在应用层协议层面也没有任何绑定条款更谈不上需要重写核心系统。用户留在Docker的唯一原因是习惯和路径依赖。习惯这个东西看起来坚固其实最经不起商业行为“背刺”——一旦用户觉察到厂商想从“习惯”里收割利益这个习惯会瞬间崩盘。这就是为什么Docker Desktop的收费公告会引起那么大的反弹因为在用户眼中这把“习惯”变成了一枚可以随时用来威胁自己的筹码而你竟然还敢把它亮出来。把这三问反过来用也能解释为什么另一类开源工具活得很滋润比如GitLab用户代码和历史都托管在平台上迁移到自建GitLab或者其他平台的成本并不低比如HashicorpTerraform的state文件、工作流配置、模块生态全都沉淀在它的体系里比如Grafana监控数据源和Dashboard一旦搭好想换一套可视化系统也相当吃力。它们不是没有被替代的风险但至少逃逸成本比Docker高一个数量级。说到底Docker的商业之难过不在于“开源”这件事本身而在于它选择了解开一个非常具体、却又非常工具化的问题并且做到了极致极致到大家都觉得它是基础设施。而基础设施的行业规则是使用者愿意为服务付费却绝不愿意为“存在感”付费。5. Docker给所有开源项目留下的三块警示牌5.1 给项目治理的提醒捐赠标准之前先想好钱的来路并非每个开源项目都会走到“成立基金会、开放标准、捐赠核心组件”这一步但Docker的经历告诉后来者标准一旦公共化原始推动者就很难再从底层技术收费。你在决定开放标准、成立治理组织之前务必先在Excel里冷静推演一下如果未来五年里这些技术被所有竞争对手合法免费使用我的公司靠什么活着是靠上层服务靠托管平台靠合规支持还是靠品牌溢价如果答案全都不清晰那么你很可能正在重蹈Docker的覆辙亲手把最有值钱的部分变成公共品然后期待用户在慷慨之后出于感恩付费。历史反复证明感恩在商业世界里是最不可靠的收入来源。相反你应该把“技术标准公共化”当作一次战略交换放弃对未来技术独占权的幻想换取生态地位、行业话语权和用户信任同时在那之前就布局好其他收入的来源。Docker的问题不是做出了让步而是在让步之后没有及时补位。5.2 给个人开发者的提醒别把“开发者体验”当成可持续收入现在不少创业者、独立开发者的思路是我做一个开发者工具免费开放把用户量做上去然后靠企业版、订阅、商业化变现。这个剧本最典型也最危险。原因很简单开发者工具的用户是最擅长“薅羊毛”和“找替代品”的人群。他们不是不愿意为工具付钱而是只愿意为“能解决问题且没有免费替代”的工具付钱。如果你的项目解决的问题比较通用、门槛不高比如容器、格式化、命令行工具、开发环境脚本那么当用户规模大到一定程度一定会出现基于开放标准或逆向工程的免费替代把你的付费点一个个拆掉。所以如果你打算把个人项目开源最好在第一天就想清楚我的项目里哪一部分是用户可以免费拿走的哪一部分是即便免费也没人替代的后者才是你将来有资格谈钱的地方。如果找不到这个“后者”那就老老实实把它当作技术作品或简历光环别指望养活团队。5.3 给公司的提醒开源是增长引擎不是商业合同Docker最大的教训或许不是“不该开源”而是“开源以后把商业想象力过早地寄托在了社区善意上”。开源给你带来的增长、传播、品牌影响力是实打实的但这些东西和“卖钱”之间从来不自动等号。公司需要回报股东、需要持续投入研发、需要给员工发薪水这些压力放在任何一个开源起家的公司身上都存在。区别在于成熟的开源公司在启动社区战略的同时就会设计一套“客户为什么离不开我”的商业机制而Docker在很长一段时间里真的只是忙于让全世界的开发者爱上它。“爱上”是可以被竞争对手拆解的“离不开”才是商业上的硬通货。Docker让全世界离不开“容器思维”却没让用户真心觉得自己离不开Docker——这两个概念之间的鸿沟就是它从成功滑向被束缚的全程。作为一个用了Docker快十年的普通开发者我回头看这段故事最大的感受是开源当然崇高但在商业世界里崇高不能替代定价权热爱不能替代收益曲线。每一个准备把项目开源的人都应该像Docker一样认真感谢开源给予的馈赠同时早早就想清楚——当所有人都把你当空气时你还有没有能力为自己的劳动拿到账单。