Docker就像一个极点,从最开始的一个Docker项目经过演化,孵化出很多聚焦特点领域的专项项目,一些项目已成为容器运行时、镜像构建等特定领域的事实标准。
但并非所有的项目都能为Docker公司带来营收,为了Docker项目与Docker公司能够可持续的发展下去,Docker公司一直在商业化方面进行探索。
Docker的生态
Docker是非常复杂的软件系统,很多功能模块在演进过程中进行了解耦并开源,催生了很多标准和开源项目,构建了 Docker 庞大的生态系统。
主要体现在容器镜像、容器运行时、镜像仓库,以及容器管理、编排与工具链方面。
容器镜像
Docker的容器镜像理念是其核心创新点之一,在镜像的格式、镜像签名,以及镜像的构建方面,Docker解耦了一些标准和项目。
OCI 标准 (Open Container Initiative) 是行业规范的基石,最初由 Docker 发起,但 OCI 现在是独立的标准化组织,是Docker对开源生态的最大贡献之一。它定义了镜像规范和运行时规范。正是这一标准的确立,确保了不同厂商的工具(如 Docker, Podman, containerd)能够互相操作,避免了厂商锁定。
Notary(特别是其下一代工具 CNCF Notation项目 是由 Docker Content Trust(镜像签名) 发展出来的,符合 OCI 标准的现代化软件供应链安全方案。它基于 The Update Framework (TUF) 规范,对镜像进行数字签名,确保镜像在传输过程中未被篡改,且来源可信。
BuildKit与Buildx:BuildKit是Docker官方的下一代构建引擎(自Docker 18.09起默认启用),它显著提升了构建速度、缓存效率和安全性。Buildx 是Docker CLI的一个插件,它基于BuildKit,提供了多平台构建(一次构建支持linux/amd64, linux/arm64等) 等更强大的单命令操作。
容器运行时
当执行 docker run 时,调用链条是:Docker Client -> Docker Daemon -> Containerd -> runC。
runC 是一个命令行工具,它是一个低级别的、符合OCI标准的容器运行时。Docker、Podman、Containerd和其他高级容器引擎最终都是通过调用 runc 来启动容器的。
Containerd 工业级的容器运行时。它最初是 Docker 内部的核心组件,后来被剥离出来成为 CNCF(云原生计算基金会)的顶级项目。containerd 管理镜像的存储、解压以及容器的执行(通过 runc)。Kubernetes 现在通常直接使用 Containerd 作为其运行时,而不是完整的 Docker Engine。
镜像仓库
Docker Hub:Docker Hub 是 Docker 官方的镜像仓库,也是 Docker 默认的镜像仓库。 作为官方公共仓库,它是大多数开发者获取基础镜像(如 nginx, ubuntu)的首选。
CNCF Distribution(原Docker Registry 项目) 是私有镜像仓库的最小化实现,它也是许多企业级私有仓库(如 Harbor)的底层核心。
管理、编排与工具链
Moby项目是Docker Engine开源组件的上游组装库,而Docker公司产品是下游"发行版"。Docker公司将核心组件(containerd, runC, 网络与存储驱动等)开源并汇集于此,方便其他开发者基于这些标准化"乐高积木"构建自己的定制化容器系统。
Docker CE是免费的社区版本 Docker 引擎,是Docker公司用 Moby 组件组装出的"官方产品"。
Docker EE是在 Docker CE 社区版本基础上增加企业功能的商业套件"。增加了镜像安全扫描、集中化管理 (Universal Control Plane)、私有镜像仓库 (DTR)以及 企业级 SLA 支持。2019年,Docker EE(及相关企业业务)被出售给 Mirantis 公司,逐渐淡出主流视野。
Docker Desktop:面向开发者的集成环境,包含 Docker CE 并极大优化了体验的桌面开发工具。Docker Desktop 是 CE 的"豪华包装"和"体验增强版"。它在 Windows 和 macOS 上封装了完整的 Linux 虚拟机来运行 Docker CE 引擎,并提供了开箱即用的一站式体验。可以理解为:Docker Desktop = Linux 虚拟机 + Docker CE + 易用的 GUI + 丰富的开发工具链。
Docker Compose 本地开发与多容器定义。它使用 YAML 文件定义多服务应用(如 Web+DB)。值得注意的是,Compose 现在也已成为一种规范(Compose Specification),不仅被 Docker 支持,也被 Kubernetes 社区(Kompose)用来作为向 K8s 迁移的桥梁。
Docker Swarm 是 Docker 原生的集群管理工具。虽然在大规模生产场景中,Kubernetes 已成为主流,但 Swarm 因其简单、轻量、集成度高,在边缘计算或资源受限的场景中仍有应用。
Docker Machine 用于在云服务商(AWS, Azure 等)或本地虚拟机(VirtualBox)上自动安装 Docker 主机。在 Docker 早期普及中起到了关键作用,但现在已基本被更成熟的云服务商集成工具和Terraform等IaC工具取代,进入维护状态。
商业化
Docker 公司(Docker Inc.)目前的商业化策略是 "核心开源,周边增值"。主要以 Docker Desktop 和 Docker Hub 收费盈利。
这意味着底层的容器运行时(Docker Engine)依然是免费开源的,但面向开发者桌面端的高级功能、企业级安全合规以及云端协作服务则是收费的重点。
收费项一: Docker Desktop (Pro/Team/Business) 面向个人、小型公司和教育机构通常可以继续免费使用。Pro/Team主要对250人以上或年收入超1000万美元的大型企业收费,Pro 版月费约为 9 美元/人,Team 版月费约为 15 美元/人。Docker Business 面向大型组织、金融机构定制报价 (按年订阅),集中策略管理、企业级安全扫描、SLA 支持。
收费项二: Docker Hub (付费计划)面向需要大量私有镜像的企业,按量计费 (Storage/Traffic)。提供私有镜像存储空间配额与容量提升、解除拉取频率限制等服务。
小结
Docker除了围绕 Docker 项目和公司的生态外,还很有云厂商、开源项目、技术社区等对Docker进行兼容适配的生态,丰富的生态使Docker成为容器化的核心代名词。
容器市场仍在快速增长,但收益集中在拥有专业技能和预算的大型企业。安全和合规是金融、医疗等行业采纳容器的关键考量。容器的使用场景已从应用打包扩展到数据科学、AI和边缘计算。