与 docker-ce 和 docker-ee(现在称为“Mirantis Kubernetes Engine”)相关的 docker.io 是什么?

新手上路,请多包涵

以前,要安装 docker 我会使用

apt-get install docker.io

但是,我最近注意到安装 docker 的文档,它使用了 docker-ce。我试图找出两者之间的区别,但结果是空的。 docker.io 与 docker-ce 的关系是什么?

原文由 Will Parzybok 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 398
2 个回答

旧版本的 Docker 二进制文件称为 docker 或 docker-engine 或 docker-io

docker-io 包仍然是 Debian/Ubuntu 为其 官方 repos 上提供的 docker 版本使用的名称。

docker-cedocker.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/

 sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

Ubuntu/Debian:

https://docs.docker.com/engine/installation/linux/docker-ce/ubuntu/

 $ sudo apt-get remove docker docker-engine docker.io containerd runc

ubuntu 上的空运行比较:

 $ sudo apt-get install docker.io --dry-run
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
  bridge-utils cgroupfs-mount containerd pigz runc ubuntu-fan
Suggested packages:
  ifupdown aufs-tools debootstrap docker-doc rinse zfs-fuse | zfsutils
The following NEW packages will be installed:
  bridge-utils cgroupfs-mount containerd docker.io pigz runc ubuntu-fan
0 upgraded, 7 newly installed, 0 to remove and 70 not upgraded.
Inst pigz (2.4-1 Ubuntu:18.04/bionic [amd64])
Inst bridge-utils (1.5-15ubuntu1 Ubuntu:18.04/bionic [amd64])
Inst cgroupfs-mount (1.4 Ubuntu:18.04/bionic [all])
Inst runc (1.0.0~rc7+git20190403.029124da-0ubuntu1~18.04.2 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64])
Inst containerd (1.2.6-0ubuntu1~18.04.2 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64])
Inst docker.io (18.09.7-0ubuntu1~18.04.4 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64])
Inst ubuntu-fan (0.12.10 Ubuntu:18.04/bionic [all])
Conf pigz (2.4-1 Ubuntu:18.04/bionic [amd64])
Conf bridge-utils (1.5-15ubuntu1 Ubuntu:18.04/bionic [amd64])
Conf cgroupfs-mount (1.4 Ubuntu:18.04/bionic [all])
Conf runc (1.0.0~rc7+git20190403.029124da-0ubuntu1~18.04.2 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64])
Conf containerd (1.2.6-0ubuntu1~18.04.2 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64])
Conf docker.io (18.09.7-0ubuntu1~18.04.4 Ubuntu:18.04/bionic-updates, Ubuntu:18.04/bionic-security [amd64])
Conf ubuntu-fan (0.12.10 Ubuntu:18.04/bionic [all])

$ sudo apt-get install docker-ce --dry-run
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
  aufs-tools cgroupfs-mount containerd.io docker-ce-cli libltdl7 pigz
The following NEW packages will be installed:
  aufs-tools cgroupfs-mount containerd.io docker-ce docker-ce-cli libltdl7 pigz
0 upgraded, 7 newly installed, 0 to remove and 70 not upgraded.
Inst pigz (2.4-1 Ubuntu:18.04/bionic [amd64])
Inst aufs-tools (1:4.9+20170918-1ubuntu1 Ubuntu:18.04/bionic [amd64])
Inst cgroupfs-mount (1.4 Ubuntu:18.04/bionic [all])
Inst containerd.io (1.2.10-3 Docker CE:bionic [amd64])
Inst docker-ce-cli (5:19.03.5~3-0~ubuntu-bionic Docker CE:bionic [amd64])
Inst docker-ce (5:19.03.5~3-0~ubuntu-bionic Docker CE:bionic [amd64])
Inst libltdl7 (2.4.6-2 Ubuntu:18.04/bionic [amd64])
Conf pigz (2.4-1 Ubuntu:18.04/bionic [amd64])
Conf aufs-tools (1:4.9+20170918-1ubuntu1 Ubuntu:18.04/bionic [amd64])
Conf cgroupfs-mount (1.4 Ubuntu:18.04/bionic [all])
Conf containerd.io (1.2.10-3 Docker CE:bionic [amd64])
Conf docker-ce-cli (5:19.03.5~3-0~ubuntu-bionic Docker CE:bionic [amd64])
Conf docker-ce (5:19.03.5~3-0~ubuntu-bionic Docker CE:bionic [amd64])
Conf libltdl7 (2.4.6-2 Ubuntu:18.04/bionic [amd64])

docker-ce 二进制文件 往往是最新版本,包括 docker-ce-cli。

原文由 lvolmar 发布,翻译遵循 CC BY-SA 4.0 许可协议

警惕 docker-ce

接受的答案并不复杂。

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 -- 并且大概再也不会回去了。
  • Debian/Ubuntu 打包系统如此复杂是有原因的。一个很好的理由。

编辑:正如 BobHy 在评论中指出的那样, docker-ce 方法也有一个优势:它不太可能与库 XYZ 存在兼容性问题。你必须权衡你的风险。

原文由 Lutz Prechelt 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题