您当前的位置:首页 > 电脑百科 > 程序开发 > 容器

不要把容器当做宇宙的中心!Docker成立十周年:来自1号员工的反思

时间:2023-10-19 13:16:12  来源:51CTO  作者:

作者丨Sam Alba

编译丨诺亚

本文作者Sam Alba目前是Dagger的联合创始人兼工程副总裁,也是Docker的前工程副总裁。他于 2010 年作为第一位员工加入 Docker。他领导了工程团队,将其从三名成员扩展到 100 名成员。随后,他领导核心产品和工程团队,负责支持各种关键的Docker产品。

Docker最近庆祝了其成立10周年。我为Docker 从过去到现在取得的所有成就感到非常自豪。如果容器没有成为计算消费的新单元,我们周围看到的很多东西——基于微服务的架构、Kube.NETes 等等——都不会存在。

另外,我敢肯定,当你回顾生命中的转折点时,你会更清晰地看到一路走来的得失。这对我来说是千真万确。事不宜迟,让我们一起看看当初我们做对了什么,又在哪些地方犯了错。

一、我们做对了三件事 1.容器将改变世界

当我在2010年加入Solomon Hykes构建DotCloud(后来更名为Docker)时,我很快就意识到,如果我们只使用当时存在的工具,我们将永远无法实现我们的愿景。

DotCloud是第一个支持任何语言的平台即服务(PaaS),而Heroku和其他公司仍然仅限于运行单一语言堆栈。我们在构建 dotCloud 时立即面临的一个限制是缺乏虚拟机(VM)作为关键基础架构构建块的替代方案。虽然虚拟机相对于基础设施领域的裸机服务器向前迈出了一大步,但它们未能提供我们进入云原生时代所需的敏捷性。

我们需要足够轻量级的东西,以便我们可以将每个客户隔离在他们自己的命名空间(计算、网络、存储)上,同时在一台计算机上打包数百个开发人员应用程序。这是微服务模式的开始。彼时,在基础设施可重复性方面,VM仍然是最先进的技术,而容器仍然是一种鲜为人知的技术,只有少数修修补补者才能使用(还记得LXC需要一个内核补丁来连接到运行中的容器上吗?)其他人认为解决方案是让VM进行零碳水饮食(还记得JeOS吗?)。

我们很清楚,尽管面临各种挑战,但围绕容器构建一切都是值得的。最终,事实证明我们是对的。几年后,我们提取了DotCloud平台的核心组件:容器运行时。我们重写了它并开放了它的源代码。这是Docker的第一个版本。最初的目标是让Docker成为从DotCloud中提取的众多开放组件中的第一个。容器编排器,即网络层,将紧随其后。但是考虑到Docker在早期获得的即时关注,时间表发生了很大的变化。

2.开发人员是重中之重

史蒂夫·鲍尔默是对的。VMware 主要专注于为 IT 解决问题,而我们很早就意识到,改变世界的方式是专注于全球的软件开发人员。你必须改变软件的构建方式,而不仅仅是操作方式,这意味着首先从开发人员的需求开始。

作为一个管理过数千名开发人员的人,我非常清楚软件开发人员每天面临的挑战。这可能是世界上最令人难以置信的工作之一,充满了具有挑战性的问题和创造美好事物的满足感,但它也可能是乏味的、令人沮丧的,有时甚至是令人愤怒的。基础设施和工具取得了巨大进步,但标准也提高了。

我们在Docker的目标是减少干扰、成本,让开发人员高效协作。最早的收购(和成功的产品集成)之一是一个名为“Fig”的产品,后来成为Docker Compose,最初由Ben Firshman(现Replicate创始人)和Anand Prasad构建。

有趣的是,由Fig (composition .yml)实现的YAML模型直接受到了我们几年前构建的第一个DotCloud服务组合(DotCloud .yml)的启发。虽然我们取得了很大的进展,但还有更多的工作要做,特别是超越容器作为唯一单元和编排容器管道的范围。这就是我们在2018年启动Dagger的原因之一,这是一个可编程的CI/CD引擎,可以在容器中运行你的管道。

3.投资建设充满活力的社区

我们首先专注于建立一个伟大的社区。从第一天起,我们就相信我们无法独自实现我们想要实现的目标。它需要赢得一大群人的心,而实现这一目标的关键是放弃对很多事情的所有权。DockerCon 成为我们行业中许多最优秀和最聪明的人的聚集地,人们聚集在一起,他们对事物如何发展有着共同的愿景,并愿意卷起袖子投入建设它。

在Docker的早期,当我们考虑自己举办开发者大会时,最初听起来像是一个遥不可及的梦想。要么适用于大公司,要么适用于更成熟的开发人员社区,例如 PyCon。但是,当我们于 2014 年 6 月在旧金山组织了第一届 DockerCon 并能够在同一地点聚集一些才华横溢的开发人员时,很明显,这是将颠覆整个公司和行业的划时代的开端。

今天,在我们行业中看到的数十个(或者数百个?)开源项目和社区中,这种遗产仍然很强大。今天,云原生计算基金会(Cloud Native Computing Foundation)成为了其中许多项目的东道主,而且每天还会有更多的项目涌现出来。

二、我们做错的三件事 1.选择与盈利

“社区优先”的另一面是,我们花了太长时间来建立一个可持续的业务。我们倾向于公开做所有事情,认真倾听社区的需求,并尽我们所能为他们提供服务。该策略的最初基础是开源项目和商业专有解决方案可以很好地共存,并成为同一客户旅程的一部分。

我今天仍然相信这个模式,但这是一种棘手的平衡。

首先,你必须接受一些开源贡献者和用户永远不会成为客户的事实。考虑到他们参与建立一个强大的社区,一个强大的品牌,这对商业渠道的增长有贡献,因而也没关系。其次,产品架构必须允许在核心开源基础上构建企业级功能。这通常伴随着复杂的支持和发布过程。我们本可以在创建稳固业务的道路上更具战略性。最终,我们到达了那里,但花了太长时间,也因此经常感到害怕。

2.团队文化

我们没有在早期定义团队文化和核心价值观。它是后来由社区或后来加入公司的人定义的。这导致我们的团队文化从早期开始就发生了巨大的变化,一开始并不明显。我们的文化最终反映了社区中人们的风格和价值观,而不是相反。

我们犯错的一个具体例子是,我们公司有两个独立的团队——一个专注于开源和社区,另一个专注于业务。这是我最大的遗憾之一。

它在内部工具,产品和项目管理以及最重要的团队文化本身方面变成了一个分裂的大脑。每个人都很难平衡这些相互竞争的利益,但当你把角色分开时,你最终会陷入内部斗争、不一致和永远无法解决的公开辩论(从他们的角度来看,每个人都是对的)。

许多最优秀和最聪明的人都想在社区方面工作,而在我们的许多合作中,往往会对另一方产生微妙(或不那么微妙)的判断。有时感觉我们让“开源信仰者”与“企业赚钱者”对立起来。这样做毫无成效。要同时拥有一个充满活力的社区和一个可持续发展的业务,就需要一个整合的团队,让每个人都与我们的模式自然产生的固有紧张关系作斗争。这也创造了更好的团队文化。不管你在公司的哪个部门工作,你只需要关心一套目标。

3.将容器作为宇宙的中心

当我退后一步时,我意识到我们过于依赖容器了。我们开始将容器视为大多数问题的核心解决方案。这让我们忽视了开发供应链的其他需求。

Docker的诞生,是因为我们看到容器将为我们的行业带来一系列必要的变化,但随着事情的发展,我们并没有关注后续的需求。由于我们留下了这么多未解决的需求,我们为其他人创造了大量的空间,让他们可以介入并建设这些领域。

一方面,这留下了巨大的机会,另一方面也意味着社区的分裂。我们在Docker没有解决的挑战之一是软件供应链的整体自动化。我们在供应链的末端释放了如此多的价值,但却没有充分解决开发人员编码和协作时的需求,今天的CI/CD仍然是一团糟。但这是一个可以解决的烂摊子。像那个时代的许多其他人一样,当Solomon Hykes,Andrea Luzzardi和我回顾我们在Docker的时光时,我们意识到我们的革命仍未完成,因此我们找到了下一个十年的使命。

参考链接:https://thenewstack.io/docker-at-10-3-things-we-got-right-3-things-we-got-wrong/



Tags:容器   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
掌握Docker网络驱动程序:优化容器通信
Docker为在容器内包装、交付和运行应用程序提供了一个强大的平台,从而彻底改变了容器化。网络是容器化的重要组成部分,Docker提供了各种网络驱动程序来支持容器之间的通信以...【详细内容】
2024-03-22  Search: 容器  点击:(10)  评论:(0)  加入收藏
Containerd容器管理
Nginx 指定容器名称 使用 ctr container create 命令创建容器后,容器并没有处于运行状态,其只是一个静态的容器。容器基本操作容器基本操作主要是 ctr image 命令,查看命令帮...【详细内容】
2024-03-20  Search: 容器  点击:(13)  评论:(0)  加入收藏
我们一起聊聊容器资源自愈
在企业实际在使用容器这类资源的时候,除了技术本身,要考虑的其他问题也会很多。企业管理的容器有千千万万,出于效率考虑,对于有特殊需求的容器如何进行批量创建和管理呢,这就需要...【详细内容】
2024-01-30  Search: 容器  点击:(47)  评论:(0)  加入收藏
Docker镜像与容器的交互及在容器内部执行代码的原理与实践
Docker作为一种流行的容器技术,已经成为现代应用程序开发和部署的重要工具。在Docker中,镜像是构建和运行容器的基础,而容器则是基于镜像创建的可执行实例。Docker镜像与容器的...【详细内容】
2024-01-10  Search: 容器  点击:(76)  评论:(0)  加入收藏
Go微服务入门到容器化实践
Go微服务入门到容器化实践Go 是一门高效、现代化、快速增长的编程语言,非常适合构建 Web 应用程序。而 Docker 是一种轻量级的容器化技术,能够使得您的应用程序在任何地方运行...【详细内容】
2024-01-01  Search: 容器  点击:(62)  评论:(0)  加入收藏
容器的“边缘”
译者 | 布加迪审校 | 重楼近年来边缘计算和容器越来越受欢迎,为我们日常生活中与数据处理相关的各种挑战提供了创新的解决方案。这些技术现在已经渗入到各种设备中,包括我们的...【详细内容】
2023-12-25  Search: 容器  点击:(161)  评论:(0)  加入收藏
Docker容器如何打包应用程序的代码和依赖项?
Docker容器通过将应用程序的代码和所有依赖项打包到一个独立的软件包中,实现了应用程序的快速部署和移植。下面是Docker容器实现这一目标的步骤:打包应用程序:使用Docker工具将...【详细内容】
2023-12-20  Search: 容器  点击:(130)  评论:(0)  加入收藏
理解Go、容器以及Linux调度器
Go开发的应用程序通常部署在容器中。在容器中运行时,重要的一点是要设置CPU限制以确保容器不会耗光主机上的所有CPU。但Go运行时不知道容器上设置的CPU限制,因此有可能会把所...【详细内容】
2023-12-18  Search: 容器  点击:(121)  评论:(0)  加入收藏
Docker容器编排技术解析
一、容器编排介绍容器编排是现代云原生应用管理的核心,它涉及在大规模的环境中自动化部署、管理、扩展和网络配置容器。随着微服务架构的兴起和应用的复杂性增加,容器编排成为...【详细内容】
2023-12-15  Search: 容器  点击:(245)  评论:(0)  加入收藏
在Linux系统中实现容器化的大规模数据分析平台:Hadoop和Spark
在Linux系统中实现容器化的大规模数据分析平台,我们可以利用Hadoop和Spark这两个强大的开源工具。Hadoop是一个分布式计算框架,适用于处理大规模数据集。它提供了分布式文件系...【详细内容】
2023-12-15  Search: 容器  点击:(154)  评论:(0)  加入收藏
▌简易百科推荐
Docker 和传统虚拟机有什么区别?
我有一个程序员朋友,他每年情人节都要送女朋友一台服务器。他说:“谁不想在过节当天收到一台 4核8g 的服务器呢?”“万一对方不要,我还能留着自己用。” 给他一次过节的机会,他能...【详细内容】
2024-03-26  小白debug  微信公众号  Tags:Docker   点击:(12)  评论:(0)  加入收藏
掌握Docker网络驱动程序:优化容器通信
Docker为在容器内包装、交付和运行应用程序提供了一个强大的平台,从而彻底改变了容器化。网络是容器化的重要组成部分,Docker提供了各种网络驱动程序来支持容器之间的通信以...【详细内容】
2024-03-22    51CTO  Tags:Docker   点击:(10)  评论:(0)  加入收藏
Containerd容器管理
Nginx 指定容器名称 使用 ctr container create 命令创建容器后,容器并没有处于运行状态,其只是一个静态的容器。容器基本操作容器基本操作主要是 ctr image 命令,查看命令帮...【详细内容】
2024-03-20  云原生运维圈  微信公众号  Tags:容器   点击:(13)  评论:(0)  加入收藏
如何基于Docker镜像逆向生成Dockerfile
引言你是否曾经遇到过一个想要使用的 Docker 镜像,但却无法修改以适应你的特定需求?或者你可能发现了一个喜欢的 Docker 镜像,但想要了解它是如何构建的?在这两种情况下,将 Docke...【详细内容】
2024-03-07  云原生运维圈  微信公众号  Tags:Docker   点击:(22)  评论:(0)  加入收藏
Kubernetes是什么?主要特点是什么?
Kubernetes是什么?Kubernetes,也称为K8s,是一个开源的容器编排系统,由Google首次开发和维护。它允许容器化的应用程序在集群中自动部署、扩展和管理。Kubernetes提供了一种容器...【详细内容】
2024-02-01    简易百科  Tags:Kubernetes   点击:(153)  评论:(0)  加入收藏
我们一起聊聊容器资源自愈
在企业实际在使用容器这类资源的时候,除了技术本身,要考虑的其他问题也会很多。企业管理的容器有千千万万,出于效率考虑,对于有特殊需求的容器如何进行批量创建和管理呢,这就需要...【详细内容】
2024-01-30  匠心独运维妙维效  微信公众号  Tags:容器   点击:(47)  评论:(0)  加入收藏
Docker与Docker Compose入门:释放你应用部署的威力
今天给大家介绍一项强大而有趣的技能,那就是使用 Docker 和 Docker Compose 来释放你的应用部署的威力!无论你是一名开发人员还是系统管理员,掌握这个技能都将为你的工作带来巨...【详细内容】
2024-01-17  waynblog  微信公众号  Tags:Docker   点击:(65)  评论:(0)  加入收藏
Docker镜像与容器的交互及在容器内部执行代码的原理与实践
Docker作为一种流行的容器技术,已经成为现代应用程序开发和部署的重要工具。在Docker中,镜像是构建和运行容器的基础,而容器则是基于镜像创建的可执行实例。Docker镜像与容器的...【详细内容】
2024-01-10  编程技术汇  今日头条  Tags:Docker   点击:(76)  评论:(0)  加入收藏
如何在 Ubuntu 上安装 Docker
使用 Docker 意味着开启一个新的计算领域,但如果你刚刚开始使用 Docker,安装可能看起来是一项艰巨的任务。在 Ubuntu 上安装 Docker 有两种推荐的方法: 从 Ubuntu 的仓库安装 D...【详细内容】
2024-01-04    Linux中国  Tags:Docker   点击:(124)  评论:(0)  加入收藏
从Kubernetes的探针到DevOps
今天在群里又看有人问如何设置 Kubernetes 的探针,感觉要补充的话太多了,结合我们在一些 DevOps 项目中痛苦的体验,今天一劳永逸的全部说完,此外,也为大家展现一下为什么 DevOps...【详细内容】
2023-12-27  云云众生s  微信公众号  Tags:Kubernetes   点击:(114)  评论:(0)  加入收藏
站内最新
站内热门
站内头条