InfoQ 编辑部出品——2021年度技术盘点与展望 了解详情
写点什么

曾两次被断言死亡,容器领导者 Docker 开启新的商业化之路

  • 2021 年 9 月 01 日
  • 本文字数:2855 字

    阅读完需:约 9 分钟

曾两次被断言死亡,容器领导者 Docker 开启新的商业化之路

“推出 Swarm”,“被 K8s 弃用”。Docker 曾两次被断言死亡,如今生态逐渐恢复,正式推出付费商业版 Docker Desktop。


美国当地时间 8 月 31 日下午,Docker 宣布推出 Business (商业)版本的 Docker Desktop(Docker 桌面),为大型企业提供更丰富的组件/功能。商业版 Docker 桌面沿用订阅模式收费,定价为 21 美元/月。


Docker 首席执行官斯科特·琼森(Scott Johnston)表示,“短期来看,我们需要解决供应链安全的挑战。而长期来看,今天全球开发者有大约 1800 万人,而到 2030 年,这一数量将上涨到 4500 万,庞大的开发者市场处于持续增长中。在这一背景下,Docker 如今已成为业界标准,我们要持续扩展业务,就必须有一个可持续的商业模式,因此我们推出了新的收费版本。”

强制大规模企业付费,新版本有哪些亮点

 

据悉,推出商业版 Docker Desktop 后,原先的免费版本改名为“个人版”(Personal)。而收费版(包括 Pro、Team 和 Business)针对大规模企业,其要求公司员工数量超过 250 人或者年收入超过 1000 万美金的企业如果使用桌面版,必须支付订阅费。


 

Docker Desktop 是一个 GUI 工具,用于管理各种 Docker 组件和功能,包括容器、图像、卷(附加到容器的存储)、本地 Kubernetes、容器内的开发环境等。大多数 Docker 组件可用于 Windows、Mac 和 Linux,但 Docker 仅适用于 Windows 和 Mac。相比较而言,商业版的 Docker Desktop 增强了包括集中管理、单点登录和增强安全性在内的功能。

 

对于新版本的特性来说,琼森提到 “使用商业版用户 Docker Desktop 的用户可以在统一的控制平面中设置开发人员的内容访问权限。而后根据内容会根据权限分发到相应的开发人员的 Docker 桌面,同时,该桌面能够在开发环境中使用。”除此外,琼森还提到“我们还提供基于 SaaS 的集中管理,以控制 CPU 的使用率、内存、端口和防火墙访问权限的配置。例如为了解决业务层的安全和用户管理问题,我们推出了单点登录功能”。

Docker Desktop 新版本的局限性

 

有亮点就会有局限性,Docker Desktop 推出的新版本亦如是。Docker Desktop 新版本发布时,Docker CEO 琼森提到此次新版本发布不涉及 Docker 的命令行引擎。其实,虽然 Docker 有 20%~25%的开发环境使用的是 Linux 系统,但 Docker Desktop 一直不支持 Linux 版本。对此,琼森提到,我们一直希望 Docker Desktop 能统一管理一致的开发环境,但目前时机还不成熟。

 

除了不支持 Linux 开发环境外,Docker Desktop 在远程开发方面也有不完善之处,如 GitHub Codespaces 或 Gitpod。使用本地计算机搭载 Mac/Windows/Linux 是当下大部分用户的选择,但也有用户对本地和远程的开发环境一致性有需求。琼森提到,这一问题需要时间,未来会逐步得到解决,而当下,如果对此需求强烈的用户,可使用 Linux 环境进行开发,以解决本地和远程开发体验的一致性问题。

 

Docker 平台作为业界标准,拥有众多组件,上述 Docker Desktop 仅仅是其中一部分。那么,整个 Docker 平台是什么样的呢? 

Docker 平台架构图解

 

Docker 是一个容器平台,其用于构建,保护和管理从开发到生产在内部和云端的应用程序。总体来说,Docker 平台有很多组件,除了 Docker Desktop 外,还包括 Docker 镜像,Docker 容器,Docker 守护进程,Docker 客户端,Docker 注册表和 Docker Hub。他们的之前互相联系,形成如今的 Docker 平台:Docker 镜像定义了容器的内容。Docker 容器是可运行的镜像实例。Docker 守护进程是一个后台应用程序,用于管理和运行 Docker 镜像和容器。Docker 客户端是一个命令行实用程序,它调用 Docker 守护进程的 API。Docker 注册表包含镜像,Docker Hub 是一个广泛使用的公共注册表。大部分 Docker(但不是桌面)在Apache v2 许可下是开源的。

 

而从其架构和运行流程来看,Docker 是一个 C/S 模式的架构,后端是一个松耦合架构,众多模块各司其职。

 


Docker 运行的基本流程为:


  1. 用户是使用 Docker Client 与 Docker Daemon 建立通信,并发送请求给后者。


  1. Docker Daemon 作为 Docker 架构中的主体部分,首先提供 Docker Server 的功能使其可以接受 Docker Client 的请求。


  1. Docker Engine 执行 Docker 内部的一系列工作,每一项工作都是以一个 Job 的形式的存在。


  1. Job 的运行过程中,当需要容器镜像时,则从 Docker Registry 中下载镜像,并通过镜像管理驱动 Graphdriver 将下载镜像以 Graph 的形式存储。


  1. 当需要为 Docker 创建网络环境时,通过网络管理驱动 Networkdriver 创建并配置 Docker 容器网络环境。


  1. 当需要限制 Docker 容器运行资源或执行用户指令等操作时,则通过 Execdriver 来完成。


  1. Libcontainer 是一项独立的容器管理包,Networkdriver 以及 Execdriver 都是通过 Libcontainer 来实现具体对容器进行的操作。

 

可见,Docker 平台是一个工程复杂度很高的应用,每一次收费模式调整的背后,都牵涉到众多工程问题。而在 Docker 收费模式之外,其技术路径的成长可谓一波三折,甚至曾经历了两次死亡。 

两次死亡的 Docker,一波三折的成长之路

 

2013 年,当时名叫 dotCloud 的 Docker 公司,开源出来了自己的容器项目 Docker。Docker 通过镜像打包的方式保持了本地环境和云端环境的高度一致,解决了运维人员的一大心病,将运维人员从一遍遍的重复劳动中解放了出来。同时友好简洁的封装,对开发人员十分具有亲和力,这让 Docker 一举走红。很多后端和云计算领域的优秀的开发力量都汇集在了 Docker 的周围,生态一时间变得异常繁荣。

 

然而,随着社区不断壮大,Docker 意识到,作为开源生态的一部分,他们还缺少有效的商业模式,他们将眼光放到了容器编排领域,推出了 Swarm,但遗憾的是,Swarm 并未真正流行起来。这一事件后来还被称为“Doker 的第一次死亡”。

 

不只是网友的玩笑,作为 Docker 项目早期的重要贡献者,RedHat 对 Docker 公司推出 Swarm 的平台化战略表示很不满并愤愤退出该项目。

 

之后,RedHat 联合 Google,共同牵头发起了如今大名鼎鼎的 CNCF(Cloud Native Computing Foundation),推动 Kubernetes 的发展(K8s)。由于 K8s 极其开放的生态,以及 Docker 自身盈利和技术的问题,K8s 不断发展壮大,成为主流。

 

甚至到 2016 年 9 月,Google 和 RedHat联合宣布了“fork Docker”,也就是后来的 CRI-O 项目,用产品表达对 Docker 价值取向的不满。并在 2020 年 12 月弃用 Docker 支持,宣告竞争结束。这一事件被网友戏称为“Docker 的二次死亡”。

 

在此之后,Docker 痛定思痛,开始了自救与革新之路。首要目标便是推广社区版项目,增加生态系统健康度。2020 年,经过一年的努力后,Docker 成功将社区版项目中一小部分用户转化为付费客户,直接导致其 2020 年年度经常性收入 (ARR) 同比增长 170%。并于 2021 年 3 月获得 2300 万美元 B 轮融资,开始发力产品创新,提升用户做容器化应用开发的生产力。

 

如今,半年时间过去,Docker 推出了 Docker Desktop 商业版,并将免费版本统一为个人版。分不同梯度收取订阅费,正式开启商业化之路。

 

在不久的将来,随着 Docker 在产品、社区推广和商业模式上不断迭代进步,或许我们能看到 Docker 再次作为容器领导者归来。

2021 年 9 月 01 日 15:504893
用户头像

发布了 73 篇内容, 共 17.7 次阅读, 收获喜欢 79 次。

关注

评论

发布
暂无评论
发现更多内容

【TcaplusDB知识库】[Generic表]读取数据接口说明

tcaplus

TcaplusDB世界残疾人日—“我们都一样”

tcaplus

Serverless 架构简介

刘宇

云计算 Serverless 云原生 Serverless Devs

java开发之Redis分布式锁相关知识分享

飞不起来的童年

Java redis

Serverless Devs 简介

刘宇

Serverless 函数计算 Serverless Devs

Elasticsearch 查询最大时间(qbit)

qbit

sql UTC TimeZone 时区

TcaplusDB有损搬迁介绍

tcaplus

数据库 腾讯云 TcaplusDB

从云计算到 Serverless

刘宇

云计算 Serverless 云原生 Serverless Devs

鸿蒙轻内核源码分析:MMU协处理器

华为云开发者社区

鸿蒙 MMU协处理器 ARM CP15协处理器 协处理器 MMU

Spring Boot 2 教程:WebFlux 快速入门实践(二)

程序员泥瓦匠

Spring Boot WebFlux

智能运维之时间序列预测中的经典时序模型

云智慧AIOps社区

机器学习 算法 智能运维 云智慧 指标预测

Homebrew大神面试Google被拒,只因写不出一道算法题

博文视点Broadview

前端开发React使用中常用的开发框架

飞不起来的童年

前端 React

TcaplusDB君 · 行业新闻汇编

tcaplus

TcaplusDB君 · 行业新闻汇编

tcaplus

重磅来袭|第一届 OpenSEC 征文活动正式开启

SphereEx

开源社区 技术分享 ShardingSphere SphereEx OpenSEC

Spring Boot 2 教程:WebFlux 整合 Mongodb(四)

程序员泥瓦匠

Spring Boot WebFlux

TcaplusDB君 · 行业新闻汇编

tcaplus

阿里云函数计算(FC)组件简介

刘宇

云计算 Serverless 云原生 函数计算 Serverless Devs

Vue中slot插槽的使用方法

Changing Lin

12月日更

Spring Boot 2 教程:WebFlux 系列教程大纲(一)

程序员泥瓦匠

Spring Boot WebFlux

一文带你熟知ForkJoin

华为云开发者社区

jdk 并发编程 并发 forkjoin 多线程并发

TcaplusDB君 · 行业新闻汇编

tcaplus

TcaplusDB君 · 行业新闻汇编

tcaplus

openLooKeng社区Apache Log4j2高危安全漏洞修复完成,建议用户升级

openLooKeng

大数据 安全漏洞 openLooKeng Apache Log4j2 远程代码执行

成功只有一种-OBKoro1的2021年终总结

OBKoro1

前端 年终总结

欢迎举报Perforce Helix Core盗版行为

龙智—DevOps解决方案

盗版软件 perforce盗版 打击盗版

工具链建设的必要性

刘宇

云计算 Serverless 云原生 工具链

Java常用的五大算法详解

编程江湖

算法 java编程

Spring Boot 2 教程:WebFlux Restful CRUD 实践(三)

程序员泥瓦匠

Spring Boot WebFlux

Spring Boot 2 教程:WebFlux 集成 Thymeleaf(五)

程序员泥瓦匠

曾两次被断言死亡,容器领导者 Docker 开启新的商业化之路 -InfoQ