草庐IT

Docker 翻脸,不再开源,期待后续

不会写文档的程序员 2023-05-27 原文

前几日,Docker Hub出了一件大事!但凡创建了“organisation”的用户都收到了一封含有简短PDF链接的邮件。邮件的内容“金钱味”十足:如果不按照要求升级付费,用户就将失去对数据的访问权限。此举不仅会破坏开源项目的自动化构建,还为一直依赖于开源的用户带来巨大的焦虑和麻烦。看来,想要白嫖的用户,好日子到头了!

邮件中提到,在审查了遗留的免费组织类型的用户账户列表后,Docker正在清退淘汰它们。按照要求,列表中的私人存储库将于4月14日被强制暂停。如果这些用户还想继续访问,他们不得不在这个日期之前升级为付费用户。

在此期间,用户公共存储库中任何镜像访问权限仍会被保留。如果用户按照要求升级付费,都可以恢复对组织帐户的访问权限。

Docker Hub是世界上最大的容器镜像存储库,拥有一系列内容源,包括容器社区开发者、开源项目和独立软件供应商。

此前,用户不仅可以访问免费的公共存储库,也可以选择私人回购的订阅计划。

不过还好,Docker此次取消开源转为付费的举措并没有“赶尽杀绝”。Docker个人、Docker专业版、Docker团队(付费)以及Docker商业版等仍会被保留。

用户:不能接受清退开源

如果取消免费,清退开源,最大的问题是:每个创建了自有“组织”的Docker Hub用户维护其公共形象的成本将会从0美元/年上升至每年几百美元。这种行为无异于将用户当作人质,如果不付钱,系统就会崩溃。

其次,Docker诞生于开源时代,虽然存在资金问题,也不应该以这种方式对开源程序所允许的范围进行脱离实际的界定。它排除了任何业余项目,以及完全捐赠给开源基金会的项目。这会使其在用户心目中的威信大打折扣。

而且,该产品的免费版本已被开源项目广泛使用。删除它意味着丢失与这些团队相关的数据,包括Docker镜像。因此,Docker不应寻求通过服务或收取更高层次的费用来盈利,接受捐款维持开源倒是可以被接受。

社区中的用户都曾经是Docker的缔造者。而现在,当Docker已经获得了巨大的收益,就完全忘记了自己的根基。

收费后影响几何?

Docker的CTO曾在推特上非正式地声明说:“他们将关闭不付款的账户,并且不允许任何人接管。”

而事实并没有如此绝对。在理想的情况下,这些组织的帐户将继续连接到用户帐户。因此,如果之后用户为它们付费,还可以恢复。

在此期间,为应对恶意软件和有毒镜像带来的破坏。维护者已经转向为开源及私有软件项目托管平台GitHub注册中心发布开源包。

为什么?因为Docker对用户实施了速率限制,任何从Docker Hub下载内容的用户都需要付费订阅——无论是个人还是公司。花钱才可以下载Prometheus、NATS、Go、Python和Node镜像。

值得庆幸的是,如果你所维护的项目属于基金会,比如,CNCF或Apache基金会,你还可以轻松地申请开通。

Docker Hub为用户带来方便

用户都知道,Docker本身只是个工具,而Docker Hub才是全部生态的核心。打个比方,Docker Hub好似App Store,要是没了App,你的手机真就沦为“移动电话”了。

具体来讲,Docker Hub就是储藏Docker的一个中心,名称近似于Github。对比来看,Github存放code,Docker Hub存放Docker images。

Docker Hub方便用户探索世界上最大的容器镜像库,从而轻松搜索超过100万个容器镜像。不仅如此,它还能在公共或私有存储库中共享和存储镜像,方便用户获取免费的公共存储库或选择私人回购的订阅计划。

就像前文中描述的那样,Docker Hub是私有存储库,能够通过GitHub和Bitbucket自动构建容器镜像,并将它们推送到Docker Hub的团队和组织。

Docker Hub上的镜像分为两大类,一类是官方镜像,如,nginx、mysql 等;另一类是普通用户镜像,由用户自己上传。对于国内用户,如果觉得Docker Hub访问速度过慢,可以使用国内一些公司提供的镜像。

这些镜像十分安全,能够方便用户构建项目,一眼就能找到适合的图片。同时,Docker Hub还能够检查镜像,了解镜像组件中存在的漏洞,并使用这些漏洞解决问题。

个人在使用Docker Hub过程中,涵盖以下几种情况:在上面找一些成熟的Docker Image,比如,python与ubuntu等,然后pull到本地进行使用;另外,就是将Docker Hub当做个人的Docker 镜像储存器,将个人的镜像放上去。

如何升级到付费模式

很多用户可能会质疑,付费订阅Docker是否有好处? 当然,Docker系列产品具备不同优势。首先,Docker 是加快生产力的个人开发人员的不二之选;其次,Docker Team是期待高效合作小团队用户的理想选择;再有,Docker Business是寻求集中管理企业的最佳选择。

那么,用户如何才能升级到付费订阅模式呢? 第一步,您需要在docker.com上登录您的帐户,然后,选择标题中的Upgrade,并选择您想要升级到的付费订阅级别和座位数量,最后,继续付款就行啦!

一旦你升级到付费订阅模式,你的帐户和所有目录下的关联配置、镜像和存储库将100%保留下来,是不是很nice!

有哪些可以替代Docker

一位Reddit用户发表了这样的观点:Docker Hub清退开源很残酷,但却不得不面对这个现实,并将寻找更好的替代品。

Podman、Kubernetes、Openshift、LXD、Docker Swarm、BuidKit和 Mesos是当今市场上一些流行的替代品。下面着重讨论Podman、Containerd两种替代方案:

(1)Podman无守护程序、开源,可用于构建、运行和管理 Linux OCI 容器和容器镜像。它易于使用、与Kubernetes兼容、支持多种容器格式,可对资源分配提供更细粒度的控制。

(2)Containerd则为运行容器提供了一致且稳定的接口,通过启动和停止容器来管理容器的生命周期,可进行图像管理和存储。此外,Containerd还可以与其它容器编排工具共同使用,以管理集群中容器的扩展和调度,具有轻量级、一致性、灵活性等优势。

如今可以预见的是,在未来的几年内,Docker依然能够在市场中占有一定的比例。而十年后,IT界将不会再把Docker作为开发者技术栈中的必备工具。

有关Docker 翻脸,不再开源,期待后续的更多相关文章

  1. ruby - 匹配大写字母并用后续字母填充,直到一定的字符串长度 - 2

    我有一个驼峰式字符串,例如:JustAString。我想按照以下规则形成长度为4的字符串:抓取所有大写字母;如果超过4个大写字母,只保留前4个;如果少于4个大写字母,则将最后大写字母后的字母大写并添加字母,直到长度变为4。以下是可能发生的3种情况:ThisIsMyString将产生TIMS(大写字母);ThisIsOneVeryLongString将产生TIOV(前4个大写字母);MyString将生成MSTR(大写字母+tr大写)。我设法用这个片段解决了前两种情况:str.scan(/[A-Z]/).first(4).join但是,我不太确定如何最好地修改上面的代码片段以处理最后一种

  2. Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting - 2

    1.错误信息:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:requestcanceledwhilewaitingforconnection(Client.Timeoutexceededwhileawaitingheaders)或者:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:TLShandshaketimeout2.报错原因:docker使用的镜像网址默认为国外,下载容易超时,需要修改成国内镜像地址(首先阿里

  3. ruby - 语法错误,意外的 $end,期待 keyword_end - 2

    尝试单击带有变音符号的按钮时出现此错误:syntaxerror,unexpected$end,expectingkeyword_endclick_on'NeueFirmahinzufц╪gen'我正在使用Ruby和Capabara进行测试。##Create_User_spec.rbrequire'acceptance/acceptance_helper'##Feature'CreateUser'feature'CreateUser'do##Scenario'CreateaUser'scenario'CreateaUser'do##Loginintotheservicevisit'url

  4. ruby-on-rails - 私有(private) gem 没有安装在 docker 中 - 2

    我正在尝试使用docker运行一个Rails应用程序。通过github的sshurl安装的gem很少,如下所示:Gemfilegem'swagger-docs',:git=>'git@github.com:xyz/swagger-docs.git',:branch=>'my_branch'我在docker中添加了keys,它能够克隆所需的repo并从git安装gem。DockerfileRUNmkdir-p/root/.sshCOPY./id_rsa/root/.ssh/id_rsaRUNchmod700/root/.ssh/id_rsaRUNssh-keygen-f/root/.ss

  5. ruby-on-rails - 将 Heroku 环境变量传输到 Docker 实例 - 2

    我在Heroku上构建了一个必须在Docker容器内运行的RoR应用程序。为此,我使用officialDockerfile.因为它在Heroku中很常见,所以我需要一些附加组件才能使这个应用程序完全运行。在生产中,变量DATABASE_URL在我的应用程序中可用。但是,如果我尝试其他一些使用环境变量(在我的例子中是Mailtrap)的加载项,变量不会在运行时复制到实例中。所以我的问题很简单:如何让docker实例在Heroku上执行时知道环境变量?您可能会问,我已经知道我们可以在docker-compose.yml中指定一个environment指令。我想避免这种情况,以便能够通过项目

  6. ruby - 更新 gem 时 Docker 包安装缓存问题 - 2

    我在开发和生产中都使用docker,真正困扰我的一件事是docker缓存的简单性。我的ruby​​应用程序需要bundleinstall来安装依赖项,因此我从以下Dockerfile开始:添加GemfileGemfile添加Gemfile.lockGemfile.lock运行bundleinstall--path/root/bundle所有依赖项都被缓存,并且在我添加新gem之前效果很好。即使我添加的gem只有0.5MB,从头开始安装所有应用程序gem仍然需要10-15分钟。由于依赖项文件夹的大小(大约300MB),然后再花10分钟来部署它。我在node_modules和npm上遇到了

  7. python - 开源 Twitter 克隆(在 Ruby/Python 中) - 2

    关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。关闭6年前。Improvethisquestion是否有任何用Ruby或Python编写的生产就绪的开源Twitter克隆?我对功能丰富的实现更感兴趣,而不仅仅是简单的Twitter消息(例如:API、FBconnect、通知等)谢谢!

  8. 【详解】Docker安装Elasticsearch7.16.1集群 - 2

    开门见山|拉取镜像dockerpullelasticsearch:7.16.1|配置存放的目录#存放配置文件的文件夹mkdir-p/opt/docker/elasticsearch/node-1/config#存放数据的文件夹mkdir-p/opt/docker/elasticsearch/node-1/data#存放运行日志的文件夹mkdir-p/opt/docker/elasticsearch/node-1/log#存放IK分词插件的文件夹mkdir-p/opt/docker/elasticsearch/node-1/plugins若你使用了moba,直接右键新建即可如上图所示依次类推创建

  9. 转转测试环境docker化实践 - 2

        测试环境对于任何一个软件公司来讲,都是核心基础组件之一。转转的测试环境伴随着转转的发展也从单一的几套环境发展成现在的任意的docker动态环境+docker稳定环境环境体系。期间环境系统不断的演进,去适应转转集群扩张、新业务的扩展,走了一些弯路,但最终我们将系统升级到了我们认为的终极方案。下面我们介绍一下转转环境的演进和最终的解决方案。1测试环境演进1.1单体环境    转转在2017年成立之初,5台64G内存的机器,搭建5个完整的测试环境。就满足了转转的日常所需。一台分给开发,几台分给测试。通过沟通协调就能解决多分支并行开发下冲突问题。1.2动态环境+稳定环境    随着微服务化的进

  10. Gradle 自动化构建开源工具 - 2

    文章目录写在前面1、下载与安装(windows)1.1、idea中配置gradle2、基础知识(Gradle6.9为例)2.1、Gradle脚本语法2.1.1、dependsOn2.1.2、创建动态任务2.1.3、增加任务行为2.1.4、参数2.1.5、Ant任务2.1.6、方法2.1.7、默认任务2.1.6、依赖任务的不同输出3、java项目中使用3.1、在已有项目中构建gradle3.2、在新建项目时构建gradle(idea)3.3、gradle项目目录结构3.4、build.gradle3.4.1、plugins3.4.2、repositories3.4.3、dependencies3

随机推荐