首页 >>  正文

制作docker镜像

来源:baiyundou.net   日期:2024-09-23

整理 | 朱珂欣 责编 | 梦依丹

出品 | CSDN(ID:CSDNnews)3 月 15 日,Docker 向所有创建了“组织”的 Docker Hub 用户发去邮件,提醒他们必须升级到每年 420 美元的付费团队方案,否则,其账号的 Docker 镜像将被删除。从官方给出的 FAQ 中可以获知,本次调整影响的群体是开源组织账户,其中 Docker 个人、Docker Pro、Docker Team 或 Docker Business 帐户、Docker 赞助的开源成员、 Docker 验证发布者以及 Docker 的官方镜像不受影响。

邮件正文大致如下:

Docker 正淘汰 Free Team Organisations,因为该免费功能与付费的 Docker Team 订阅有很多相同的特性、费率和功能;

在审查了旧版 Free Team Organisations 成员的帐户列表后,我们确定您可能是其中之一。如果您使用旧版 Free Team Organisations,则将于 2023 年 4 月 14 日(UTC 时间晚上 11:59)暂停访问一切付费功能(包括私有存储库)。需要在 2023 年 4 月 14 日之前升级订阅(言外之意就是付钱),才能继续访问您的组织;

如果您不升级到付费订阅,Docker 将保留您的组织数据 30 天,之后将其删除。在此期间会保留你对公共存储库的访问权限,但将进行速率限制;如果您升级到付费订阅,则可以在 30 天内的任何时候恢复对组织帐户的访问权限。众所周知,Docker Hub 被很多开源项目用于发布镜像,并且多数项目都依赖于免费的镜像,假设镜像被删除,将对使用免费的组织下的账号造成巨大的影响。消息刚一爆出,就引发了巨大争议,很多人开始将其镜像迁移出 Docker 转到其它平台或自行托管。随后,Docker CTO 直接在 Twitter 上表示:“将关闭那些不交钱的账户,并且不允许其他人接管这个名字”。

(图源:Twitter 截图)

Docker 与 开源

其实,对于开发者而言,Docker 之所以在过去被广泛使用,很大程度上可以归因为:开源与方便。Docker 提供了一套标准化的解决方案,很大程度上提升了部署、发布、运维的效率。

2013 年,Docker 作为开源引擎推出,专注于开发人员和系统操作员的需求,将应用程序依赖关系从基础设施中分离出来,已经成为时下非常流行的 Linux 容器解决方案。

(图源:Docker 官网截图)

并且,Docker 在 Linux 上的成功促成了与微软的合作,将 Docker 容器及其功能引入 Windows Server。早前,从 Docker 及其开源项目中获得的技术,Moby (由 Docker 创建的一个开源框架)已经被许多数据中心供应商和云提供商所使用,许多供应商都通过 Docker 来提供容器原生 IaaS 产品。

2015 年 6 月,Docker 将容器映像规范和运行时代码(现在称为 RunC )捐赠给 OCI (Open Container Initiative),以帮助建立标准化,促使容器生态系统的发展和成熟。

2017 年,Docker 继续回馈 Containerd 项目,将该项目捐赠给了 CNCF ( 云原生计算基金会 )。

付费模式带来的问题与解决措施

从“免费”到“付费”突然间的变化,给开源项目社区的用户带来了不少的恐慌与疑虑。对此,Docker 官方也提及了相关问题及应对措施。

(图源:Docker 官网截图)

1、当付费成本从 0 美元/年上涨到 420 美元/年,用户该如何查看自己是否受到影响?

可以查阅自身的 Docker 组织帐户页面,任何受影响的组织都会在“订阅”列中标记为“Docker Free Team”,但只有不到 2% 的 Docker 用户在其账户上拥有 Free Team 组织。

2、用户依赖的开源镜像,是否会被删除吗?

不会。公共镜像只有在镜像维护者决定将其从 Docker Hub 中删除时才会消失。如果维护人员迁移到 Docker 赞助的开源豁免条款(DSOS计划)或付费订阅 Docker,他们的公共镜像会得到继续分发。

这里笔者也顺便提一下 DSOS 计划:

申请的镜像项目绝对不得商业化

不得对外提供服务

不得接受赞助商赞助、

不得发布付费插件

后续也不得采取任何本质上属于这几类情况的其他盈利措施

仅允许以接受捐赠的方式维持项目运转。

3、如果用户正在运行一个开源项目,该如何应对这类情形?

目前,Docker 鼓励所有开源项目申请 DSOS 计划,并且已经指派更多人员进行审核。

4、如何维护对私有存储库的访问?

面向组织的私有存储库是付费订阅 Docker 的一个功能,如果您当前正在访问一个遗留的 Free Team 组织并使用私有仓库,那么在 2023 年 4 月 13 日之后便会暂停。

但是,您可以选择几种订阅层次,以便继续使用私有仓库。

5、用户名下的 Docker 镜像是否会被其他人“占用”?

Docker 明确表示,即使用户账号被删除或者自愿离开 Docker ,其他用户无法“占用”。

6、可以迁移到个人账户吗?

可以通过提交支持工单,从 Free Team 组织迁移到个人用户账户。工单处理期间,Docker 不会对账户采取任何行动。

7、如果迁移到 Docker 以外的镜像平台,请问可以导出数据吗?

可以,但必须是在 2023 年 4 月 13 日之前。

8、Docker 订阅费用是多少?存在什么优势?

(图源:Docker 官网截图)

从官网信息来看,Docker 提供了三个付费订阅层。Docker 明确表示了三者的各自优势:

Docker Pro 适合能提高工作效率的个人开发人员;

Docker Team 适合希望高效协作的小型团队;

Docker Business 适合寻求集中管理和高级安全功能的企业。

此外, Docker 升级到付费订阅后,用户帐户和所有相关配置、映像、存储库、设置等将保持不变。

一直以来,开源以开放的合作方式无形之中为不少用户带来意想不到的高价值产出。因此,Docker 这波如饮鸩止渴的收费变化,即便官方明确给出了相关“解决措施”,也阐述了付费模式的优势,却似乎仍然无法安抚民心。

铁杆拥护者发长文控诉 Docker 的虚伪

作为 Docker 的铁杆拥护者,“Docker Captains” 的忠实成员 Alex Ellis 在其博客发长文控诉 。本身就是付费用户的他并不反对 Docker 赚钱,但 Docker 的沟通方式和效果都糟糕透顶,给很多最忠诚、最支持他们的社区用户制造了焦虑,他们挟镜像以令开源的做法,暴露了他们对开源可持续问题的虚伪态度,这一项计划充满了敌意和脱节操作。

对于自己在 Docker 上维护的众多项目,早已发布到 GitHub 的 Container Reigstry 上,因 Docker 的速率限制,导致他也不得不掏钱快速下载 Prometheus、NATS、Go、Python 和 Node.js 等镜像。

他表示,目前唯一的希望是获得“开源”认证资质的组织才能免招 Docker “征税”,例如归云原生计算基金会(CNCF)或者 Apache 基金会所有项目。并列举了知名开源项目 curl,该开源库几乎被应用在每台 Mac 和 Linux 计算机上,甚至 Docker 自身也在使用,但也难逃此次收费计划。

如果开发者能够完全删除你的组织,那么就可以将其重新创建为免费的个人账户。这应该足以保留名称,以防止被恶意接管。但这个可行性太低了,因为大型项目无法简单地删除其组织和所有镜像。

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

创建一个新的个人用户账户

将所有所需的镜像和标签镜像复制到新的用户账户

删除组织

将个人用户账户重命名为组织名称

除了 Alex Ellis 发长文控诉之外,在 Hacker News、Twitter 上皆引发了一众网友的激烈讨论。

一位 SRE 经理直言:“早上看到这个消息的时候,就感到非常头疼。”随后还提及了:“在未来 30 天内,自己依赖的一堆图像可能会消失……”

一位网友直接表示:“非常担忧”。甚至坦言:“我建议创建自己的私有 Docker 注册表,下载使用映像的所有当前版本,并将它们推送到所述注册表。或许,可以使用谷歌来备份重要图像,以防 Docker Hub 出现问题。”

也有网友调侃道:“Docker 最后还是成别人的嫁衣,我是说 Containerized 标准的嫁衣”、“需要金钱维护的免费服务”和“低风险”是不兼容的。

但是,也有网友对 Docker 的做法持有较为“乐观”的态度,认为:“Docker 这个工具对软件开发来说存在优势,它比管理依赖关系的旧方法好得多,能确保项目中的每个人安装的版本保持一致。”

在过去,随着云原生、容器化、微服务、K8s 等技术的发展,让 Docker 在开发者领域被大家广泛运用。如今,Docker 将删除所有未付费开源组织的镜像,必然会给开发者们带来“不适感”,虽然也可以免费申请,但条款却十分苛刻。对于 Docker 的这一措施,你怎么看?

参考链接:

https://www.docker.com/blog/we-apologize-we-did-a-terrible-job-announcing-the-end-of-docker-free-teams/

https://www.docker.com/resources/what-container/

https://blog.alexellis.io/docker-is-deleting-open-source-images/

https://news.ycombinator.com/item?id=35166317

","gnid":"9c391748770597ea5","img_data":[{"flag":2,"img":[{"desc":"","height":"80","s_url":"https://p0.ssl.img.360kuai.com/t013d73ffee4a20366b_1.gif","title":"","url":"https://p0.ssl.img.360kuai.com/t013d73ffee4a20366b.gif","width":"640"},{"desc":"","height":"420","title":"","url":"https://p0.ssl.img.360kuai.com/t01c696a36bcaf84688.jpg","width":"821"},{"desc":"","height":"438","title":"","url":"https://p0.ssl.img.360kuai.com/t01db45a8c98481b883.jpg","width":"720"},{"desc":"","height":"587","title":"","url":"https://p0.ssl.img.360kuai.com/t015fb5f8ef36e78fe1.jpg","width":"1032"},{"desc":"","height":"688","title":"","url":"https://p0.ssl.img.360kuai.com/t0103541a3a56352c83.jpg","width":"1080"},{"desc":"","height":"901","title":"","url":"https://p0.ssl.img.360kuai.com/t01852efd0fd8de428e.jpg","width":"832"},{"desc":"","height":"80","s_url":"https://p0.ssl.img.360kuai.com/t018e6f0fcf6c9df4ee_1.gif","title":"","url":"https://p0.ssl.img.360kuai.com/t018e6f0fcf6c9df4ee.gif","width":"960"}]}],"original":0,"pat":"art_src_1,fts0,sts0","powerby":"cache","pub_time":1679050103000,"pure":"","rawurl":"http://zm.news.so.com/cd8001ddecca780db4aa452b468e1159","redirect":0,"rptid":"0f26a3c095c63fbb","rss_ext":[],"s":"t","src":"CSDN","tag":[{"clk":"ktechnology_1:twitter","k":"twitter","u":""},{"clk":"ktechnology_1:linux","k":"linux","u":""}],"title":"“虚伪”的 Docker 开始清退开源组织,不付费就删除所有镜像!

管泽胃2207可不可以通过一个ISO的系统镜像来制作一个Docker的基础镜像 -
莘鲍蓉13653596263 ______ 这个真做不到,首先通过dockerfile构建你需要的镜像,然后再启动容器.

管泽胃2207如何将虚机变成docker镜像 -
莘鲍蓉13653596263 ______ 可采用以下方法: 1.进入root权限 sudo su 2.停止所有的container,这样才能够删除其中的images: docker stop $(docker ps -a -q) 如果想要删除所有container的话再加一个指令: docker rm $(docker ps -a -q) 3.查看当前有些什么images docker...

管泽胃2207在制作Docker镜像过程中,能直接使用已有的docker镜像吗? -
莘鲍蓉13653596263 ______ AppCenter2.0的镜像同时支持kvm和docker,但由于需要实现 配置变更,不能直接使用已有的dockers镜像,需要进行一些改造哦, 镜像默认启动的进程不能应用本身的进程,

管泽胃2207如何进入到docker 创建的镜像文件 -
莘鲍蓉13653596263 ______ 使用dockerfile构建镜像 dockerfile使用基本的基于DSL语法的指定来构建一个docker镜像.之后使用docker build 命令基于dockerfile中的指定构建一个新的镜像 1.docker大体上按照如下流程执行dockerfile中的指令: docker从基础镜像运行一个容器 ...

管泽胃2207Docker 用镜像方式迁移和用Dockerfile动态生成有什么区别 -
莘鲍蓉13653596263 ______ 情况一:假定这个image build之后没有run过,那么通过save只是将这个image所有的data layer导成二进制tar文件.通过load导入后,和之前build好的image相比没有区别,所以一样. 情况二:假定这个image 已经被run过但未commit(如果commit,则会是一个新的image),那么通过save仍然只是将image的data layer导成二进制tar文件,而container所产生的新data layer不会导出.因此通过load导入后,和正在处于run状态的container相比,数据不一致(缺少run之后产生的data layer).

管泽胃2207如何在docker容器中运行一个jar而不会被退出 -
莘鲍蓉13653596263 ______ 假设你的容器名字叫做container,试试这样:1 docker run container tail -f /dev/null 后面加命令tail -f /dev/null,就可以保持你的容器一直在前台运行了.

管泽胃2207怎么将.iso镜像做成docker image -
莘鲍蓉13653596263 ______ 初次安装部署好docker后,大多数镜像可以从DockerHub提取,但是大多数人都希望自己可以完全自定义一个镜像,那么这里需要一个第三方工具febootstrapepel6的源提供febootstrap的RPM包yuminstalldocker-iofebootstrap-yservicedockerstartchkconfigdo.

管泽胃2207如何把docker进程把启动文件映射到容器内 -
莘鲍蓉13653596263 ______ 1.安装Docker在开始前,我们首先得确保在Linux主机中已经安装了Docker.这里,我运行的是CentOS7主机,我们将运行yum管理器和下面的命令来安装Docker.#yuminstalldocker#systemctlrestartdocker.service2.创建Dockerfile现在,Docker...

管泽胃2207docker镜像版本问题 -
莘鲍蓉13653596263 ______ docker search centos 并没有加版本号,默认使用latest,等价于 docker search centos:latest 如果希望安装centos6,键入以下命令 docker pull centos:6 centos6和7都是继承CentOS Base Image的镜像,CentOS Base Image里面会调用你的centos里面的一些命令.希望可以帮到你.

(编辑:自媒体)
关于我们 | 客户服务 | 服务条款 | 联系我们 | 免责声明 | 网站地图 @ 白云都 2024