以前,要安装 docker 我会使用
apt-get install docker.io
但是,我最近注意到安装 docker 的文档,它使用了 docker-ce。我试图找出两者之间的区别,但结果是空的。 docker.io 与 docker-ce 的关系是什么?
原文由 Will Parzybok 发布,翻译遵循 CC BY-SA 4.0 许可协议
以前,要安装 docker 我会使用
apt-get install docker.io
但是,我最近注意到安装 docker 的文档,它使用了 docker-ce。我试图找出两者之间的区别,但结果是空的。 docker.io 与 docker-ce 的关系是什么?
原文由 Will Parzybok 发布,翻译遵循 CC BY-SA 4.0 许可协议
接受的答案并不复杂。
docker-ce
由 docker.com 提供, docker.io
由 Debian 提供。
从表面上看,这意味着您可以立即安装 docker.io
,而对于 docker-ce
您必须事先从 docker.com 附加一个外部存储库。
然而,更重要的是,尽管这两个包都提供了正确发布的 Docker 版本,但它们的 内部结构却截然不同:
docker.io
以 Debian(或 Ubuntu)方式进行: 每个外部依赖项都是一个单独的包,可以并且将独立更新。docker-ce
采用 Golang 的方式:在构建之前将 所有依赖项拉入 源代码 树,然后整个事情形成一个单独的包。因此,您总是一次更新 docker 及其所有依赖项。后一种方法的问题在于它与 Debian/Ubuntu 试图做的大部分事情背道而驰。
docker-ce
的方式做……您的系统上将有许多库的 174 个版本,这不仅会消耗大量内存,而且基本上无法确定您是否拥有 XYZ 库的 7.6.5 版本,其中存在 可怕 的安全漏洞他们。
更不用说关闭该漏洞(或您拥有的所有 109 个实例)。
更糟糕的是,这 174 个版本中的一个很可能是三年前 XYZ 的 5.4.3 版本,它还有另一个非常不同但同样巨大的安全漏洞,世界早就忘记了,但它仍然会愉快地存在在您的系统上。
一些备注:
docker.io
“过时”。那是因为它大约一年没有维护。自 2019 年 8 月起,情况不再如此。docker-ce
切换到使用 docker.io
-- 并且大概再也不会回去了。编辑:正如 BobHy 在评论中指出的那样, docker-ce
方法也有一个优势:它不太可能与库 XYZ 存在兼容性问题。你必须权衡你的风险。
原文由 Lutz Prechelt 发布,翻译遵循 CC BY-SA 4.0 许可协议
2 回答2.5k 阅读✓ 已解决
2 回答853 阅读✓ 已解决
2 回答3.2k 阅读
1 回答3.1k 阅读
1 回答1.5k 阅读✓ 已解决
1 回答1.2k 阅读✓ 已解决
2 回答1.4k 阅读
旧版本的 Docker 二进制文件称为 docker 或 docker-engine 或 docker-io
docker-io 包仍然是 Debian/Ubuntu 为其 官方 repos 上提供的 docker 版本使用的名称。
docker-ce 是 docker.com 直接提供的认证版本,也可以 从源代码构建。
在 Debian/Ubuntu 平台上使用名称 docker-io 的主要原因是避免与 docker system-tray 二进制文件发生名称冲突。
http://manpages.ubuntu.com/manpages/precise/man1/docker.1.html
Docker有企业版(EE)和免费社区版(CE)
在安装 Docker 社区版(来自 docker.com 的 docker-ce)之前,您可能需要删除旧的二进制文件。
森托斯/ RHL:
https://docs.docker.com/engine/installation/linux/docker-ce/centos/
Ubuntu/Debian:
https://docs.docker.com/engine/installation/linux/docker-ce/ubuntu/
ubuntu 上的空运行比较:
docker-ce 二进制文件 往往是最新版本,包括 docker-ce-cli。