前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Docker 正在删除开源组织,强制其付费

Docker 正在删除开源组织,强制其付费

作者头像
我的小碗汤
发布2023-03-23 20:03:58
9130
发布2023-03-23 20:03:58
举报
文章被收录于专栏:我的小碗汤我的小碗汤

作者:Alex Ellis 本文翻译自:https://blog.alexellis.io/docker-is-deleting-open-source-images/

前几天,Docker 向所有创建了“组织”的 Docker Hub 用户发送了一封电子邮件,告诉他们如果不升级到付费团队计划,他们的帐户将被删除,包括所有镜像。该电子邮件包含指向简洁编写的 PDF 的链接,该链接缺少许多重要的细节,这给开源维护者带来了极大的焦虑和额外的工作。

据我们所知,这只会影响开源社区经常使用的组织帐户。个人账户没有变化。免费个人帐户有6 个月的保留期[1]

为什么这是个问题?

  1. 付费团队计划每年花费 420 美元(按月支付)[2]
  2. 许多开源项目,包括我维护的项目,多年来一直将镜像发布到 Docker Hub
  3. Docker 的开源程序充满敌意且脱节

我是 Docker 最大的拥护者之一,在他们的活动中发言,为他们的项目做出贡献,并且是他们自愿影响者计划[3] Docker Captains[4] 的忠实成员。我已经写了几十篇关于 Docker 技术的文章和代码示例。

我不是那些认为所有软件和服务都应该免费的人。我为个人帐户付费,不是因为我再在那里发布镜像,而是因为我需要拉取镜像,例如 Go 的基础镜像或 Node.js 作为我日常开源工作的一部分。

当我们的一位 OpenFaaS 客户抱怨要为 Docker Desktop 付费,并想花几周的时间来尝试让 Podman 或 Rancher Desktop 正常工作时,我不得不忍气吞声。如果您使用的是 Mac 或 Windows 机器,我认为值得为之付费。但那是另一回事。

我认识Docker 的新 CTO[5]已经很长时间了,我很惊讶他们的沟通和做法如此脱节。

我不是唯一一个,您可以在 Twitter[6](包括许多引用的推文)和Hacker News[7]上阅读大家的反应。

让我们回顾一下每一点,然后探索推进备选方案和解决方案的可选项。

问题

  1. 托管公共镜像的组织的成本已从 0 美元/年上升到420 美元/年(按月支付)[8]。许多开源项目获得的资金很少甚至没有。如果 Docker 想要限制私人回购,我会理解的,因为什么样的开源存储库需要他们?如果他们将这种方法应用于新的组织,我会理解的。
  2. 多年来,许多开源项目已经以这种方式向 Docker Hub 发布了镜像,openfaas[9] 早在 2016 年就开始了。任何人都可以通过网络占用镜像并发布恶意内容。OpenFaaS 项目现在将其免费的 Community Edition 映像发布到 GitHub 的容器注册中心,但是我们仍然可以看到数千个来自 Docker Hub 的旧镜像。Docker 把我们当人质,如果我们不付钱,系统就会崩溃,很多免费用户就会死。
  3. Docker 对他们的开源程序允许的内容有一个敌对的和脱节的定义。它排除了业余项目或完全捐赠给开源基金会以外的任何项目。

没有商业化的途径。你的组织不能通过服务或收费更高级别来谋求利润。接受捐赠以维持你的努力是可行的。

自最初的电子邮件以来,这种语言已经软化,我认为是为了减少反对意见。

Open Source 有资金问题[10],Docker 诞生于 Open Source。我们社区是他们的创造者,现在他们有了可观的收入[11],他们已经准备忘记自己的根源。

解决方法

Docker 的CTO 在 Twitter 上非正式地评论说[12],他们将关闭不付款的帐户,并且不允许任何其他人接管名称。我希望看到以书面形式发布,作为书面承诺。

在理想情况下,这些帐户将继续附加到用户帐户,这样如果出于某种原因我们想为它们付费,我们就可以恢复它们。

恶意软件、有毒镜像的影响是我在这里的主要关注点。对于我维护的许多项目,我们已经转而将开源包发布到 GitHub 的 Container Registry。为什么?因为 Docker 实施了不切实际的速率限制[13],这意味着任何从 Docker Hub 下载内容的用户都需要付费订阅,无论是个人用户还是企业用户。我花钱买一个,这样我就可以下载 Prometheus、NATS、Go、Python 和 Node.js 等镜像。

也许您有资格参加“开源”计划?

如果您维护的项目由 CNCF 或 Apache 等基金会所有,您可以简单地申请 Docker 的计划。然而,如果你是独立的,并且有任何资金来源或任何财务可持续性的方式,我会把 Docker 领导者的话重新表述一下:“你很倒霉。”

我们举个例子?由 Daniel Stenberg 维护的 curl 项目[14],安装在每台 Mac 和 Linux 计算机上并且肯定被 Docker 使用。丹尼尔有一家咨询公司,从事定制开发。这样一个核心的互联网基础设施似乎被取消了资格。

在恶意行为者出现之前抢注

如果您能够完全删除您的组织,那么您可以将其重新创建为一个免费的个人帐户。这应该足以保留名称以防止恶意收购。

如果你能够完全删除你的组织,那么你就可以将其重新创建为一个免费的个人账户。这应该足以保留这个名字,以防止敌对势力接管。Docker 是否忘记了 Remember leftpad[15]

大型项目不太可能简单地删除其组织及其所有镜像。

如果是这种情况,并且您可以忍受一些停机时间,您可以尝试以下操作:

  • 创建一个新的个人用户帐户
  • 将镜像同步到新用户帐户
  • 删除组织
  • 将个人用户帐户重命名为组织名称

开始将镜像发布到 GitHub

GitHub 的 Container Registry[16]为公共镜像提供免费存储。它不需要将服务帐户或长期令牌作为 Secret 存储在 CI 中,因为它已经可以生成短期令牌来访问 ghcr.io。

想看一个完整的例子吗?

我们在 actuated 博客上介绍了它:从 GitHub Actions 发布多架构容器的有效方式[17]

如果您在 GitHub 上已有镜像并想使用 GitHub 的内置 GITHUB_TOKEN 开始在那里发布新标签,则需要转到 Package 并编辑其写入权限。添加“写入”访问存储库的权限。

确保您没有错过工作流文件的“权限”部分。

设置写入权限

如何使用 GITHUB_TOKEN 为现有存储库设置写入权限

迁移现有镜像

Google 开源办公室的 crane 工具能够以比运行 docker pull、tag 和 push 更有效的方式镜像镜像。pull, tag 和 push 方法也不适用于多架构镜像。

以下是列出镜像标签的示例命令:

代码语言:javascript
复制
crane ls ghcr.io/openfaas/gateway | tail -n 5

0.26.1
c26ec5221e453071216f5e15c3409168446fd563
0.26.2
a128df471f406690b1021a32317340b29689c315
0.26.3

crane cp命令不需要本地 docker 守护进程并直接从一个注册表复制到另一个注册表:

代码语言:javascript
复制
crane cp docker.io/openfaas/gateway:0.26.3 ghcr.io/openfaas/gateway:0.26.3

在 Twitter 上,CNCF Harbor[18] 项目的一名全职员工也解释说它具有“镜像”能力。

总结

许多开源项目已经离开 Docker Hub,因为他们开始对公共开源镜像的拉取进行限制,例如 Go、Prometheus 和 NATS。我个人仍然向 Docker 支付费用,唯一的原因是能够拉取这些镜像。

我不反对 Docker 赚钱,我已经向他们支付了费用,并鼓励客户做同样的事情。我的问题在于糟糕的信息传递,他们刻意制造了对许多最忠诚和支持社区用户的焦虑,以及他们对开源可持续性的虚伪看法。

如果您正在使用 GitHub Actions,则可以轻松将镜像发布到 GHCR.io - 您可以使用我分享的inlets-operator[19]示例。

但是,GitHub 的可靠性如何呢?

昨天我刚刚与一位 actuated[20] 的客户交谈。他们对我们的产品和服务感到满意,但在试点的第一周中,由于 GitHub 的故障和事故不断增多,他们遇到了停机时间。

我们只能希望自年初以来几乎每天都发生故障的问题将得到解决。

GitHub 完美吗?

我从未预测过 Docker 自其重生以来的变化,从开源社区的宠儿,到每个开发人员的笔记本电脑,到今天的地步。因此,随着 GitHub 的最新发展,例如 Actions 和 GHCR 变得越来越好,以及它们被微软收购,人们很容易相信它们是不可误解的,并且不会做出可能会伤害维护者的决定。所有企业都需要以盈利和损失为基础进行工作。GitHub 如何伤害开源开发人员的一个典型例子是,当它取消所有通过 PayPal 支付的维护者赞助时。这是在很短的时间内完成的,对我的开源工作造成了很大的打击。

还有其他免费为开源项目提供注册表的吗?我们都知道 GitLab 和 Quay 也提供免费托管。

如果 GitHub 向 Docker 那样,对存储开源和公共存储库收费该怎么办?这是我们需要准备的风险,更应该考虑的是“何时”而不是“如果”的问题。就在几年前,Travis CI 是开源项目构建和协作的地方。自那以后,我似乎再也没有听到他们的名字了。

让我们不要低估开源维护者为了继续服务他们的社区所付出的努力。他们已经日夜工作,没有报酬或资金支持,所以虽然这对任何人来说都不方便,但我们会找到前进的方法。就像当 Travis CI 拒绝我们时,我们所做的一样,现在 Docker 正在摒弃其开源根源。

看看 Twitter 上人们的评论:

参考资料

[1]

6 个月的保留期: https://www.docker.com/blog/scaling-dockers-business-to-serve-millions-more-developers-storage

[2]

每年花费 420 美元(按月支付): https://twitter.com/alexellisuk/status/1637942604779143168?s=20

[3]

在他们的活动中发言,为他们的项目做出贡献,并且是他们自愿影响者计划: https://blog.alexellis.io/dockercon-2017-captains-log/

[4]

Docker Captains: https://www.docker.com/blog/inside-look-docker-captains-program/

[5]

Docker 的新 CTO: https://twitter.com/justincormack

[6]

Twitter: https://twitter.com/alexellisuk/status/1635679295891812359?s=20

[7]

Hacker News: https://news.ycombinator.com/item?id=35154025

[8]

420 美元/年(按月支付): https://www.docker.com/pricing/

[9]

openfaas: https://github.com/openfaas/faas

[10]

Open Source 有资金问题: https://blog.alexellis.io/the-5-pressures-of-leadership/

[11]

可观的收入: https://sacra.com/c/docker/

[12]

CTO 在 Twitter 上非正式地评论说: https://twitter.com/justincormack/status/1635706522419200004?s=20

[13]

不切实际的速率限制: https://docs.actuated.dev/tasks/registry-mirror/

[14]

curl 项目: https://daniel.haxx.se/

[15]

Remember leftpad: https://qz.com/646467/how-one-programmer-broke-the-internet-by-deleting-a-tiny-piece-of-code

[16]

GitHub 的 Container Registry: https://docs.github.com/en/packages/working-with-a-github-packages-registry/working-with-the-container-registry

[17]

从 GitHub Actions 发布多架构容器的有效方式: https://actuated.dev/blog/multi-arch-docker-github-actions

[18]

CNCF Harbor: https://goharbor.io/

[19]

inlets-operator: https://actuated.dev/blog/multi-arch-docker-github-actions

[20]

actuated: https://actuated.dev/

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-03-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 进击云原生 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 问题
  • 解决方法
    • 也许您有资格参加“开源”计划?
      • 在恶意行为者出现之前抢注
        • 开始将镜像发布到 GitHub
          • 迁移现有镜像
          • 总结
            • 参考资料
            相关产品与服务
            容器镜像服务
            容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档