首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >docker.io与docker-ce和docker-ee有什么关系?

docker.io与docker-ce和docker-ee有什么关系?
EN

Stack Overflow用户
提问于 2017-07-11 08:00:16
回答 4查看 76.4K关注 0票数 156

以前,要安装docker,我会使用

代码语言:javascript
复制
apt-get install docker.io

然而,我最近注意到了安装docker的文档,它使用docker-ce。我试着找出两者之间的区别,但一无所获。docker.io与docker-ce有什么关系?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-07-11 08:44:50

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

docker -io包仍然是Debian/Ubuntu在其official repos上提供的docker版本的名称。

docker-ce是由docker.com直接提供的认证版本,也可以是built from source

在Debian/Ubuntu平台上使用docker-io的主要原因是为了避免与docker系统托盘二进制文件的名称冲突。

http://manpages.ubuntu.com/manpages/precise/man1/docker.1.html

Docker有一个企业版(EE)和一个免费的社区版(CE)

在安装Docker Community Edition (来自docker.com的docker-ce)之前,您可能需要删除较旧的二进制文件。

Centos/RHL:

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

代码语言:javascript
复制
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/

代码语言:javascript
复制
$ sudo apt-get remove docker docker-engine docker.io containerd runc

在ubuntu上的演练比较:

代码语言:javascript
复制
$ 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 binaries将倾向于最新版本,并包括docker-ce-cli。

票数 96
EN

Stack Overflow用户

发布于 2019-08-27 23:55:35

提防docker-ce

公认的答案是不复杂的。

docker-ce由docker.com提供,docker.io由Debian提供。

从表面上看,这意味着你可以立即安装docker.io,而对于docker-ce,你必须事先从docker.com附加一个外部存储库。

然而,更重要的是,尽管这两个包都提供了Docker的正确发布版本,但它们具有完全不同的内部结构

  • docker.io采用Debian (或Ubuntu)的方式: independently.
  • docker-ce每个外部依赖项都是一个单独的包,可以而且将会被更新。这样做:在构建之前,所有的依赖项都会被拉入树中,然后整个过程就会形成一个单独的包。因此,您始终可以一次使用其所有依赖项来更新docker。

后一种方法的问题是,它与Debian/Ubuntu试图做的大部分事情背道而驰。

如果每个人都像docker-ce那样做...

...you在你的系统上有174个版本的许多库,这不仅消耗了大量的内存,而且还使得你基本上不可能决定你是否拥有7.6.5版本的库XYZ,其中存在可怕的安全漏洞。

更不用说关闭该漏洞(或您拥有的所有109个实例)。

更糟糕的是,174个版本中的一个很可能是三年前的XYZ版本5.4.3,它有另一个非常不同但同样巨大的安全漏洞,世界早已忘记了这个漏洞,但它仍然会愉快地存在于您的系统中。

以下是一些备注:

  • 许多网页称docker.io是“过时的”。这是因为它大约有一年没有维护过。从2019年8月起,情况就不再是这样了。
  • 我今天从here学到了这一切,现在将从使用docker-ce转向使用docker.io --而且可能再也不会回来了。
  • 这就是为什么Debian/Ubuntu打包系统如此复杂的原因。一个很好的理由。

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

票数 177
EN

Stack Overflow用户

发布于 2021-12-20 00:51:35

docker.io

这是由Linux发行版提供的。他们自己编译上游docker引擎,并添加一些特定于发行版的代码,主要是在启动脚本中。之所以选择这个名称,是因为docker已经被一个不相关的项目采用。此外,Debian目前还有其他一些相关的包:

docker compose - separately.

  • rootlesskit::打包的文档,用于在没有根user.

  • docker-compose:的情况下运行Docker引擎这是一个很好的选择,因为docker Inc.正在打包

  • ,但是随着compose的版本2的变化,这种情况正在发生变化,该版本是用Go编写的,并直接包含在注册表服务器的docker image.

  • credential独立打包中,尽管它不清楚使用案例,因为几乎每个人都将其作为容器从compose助手运行:有几个用于这些的包,如果您为您的注册表向云供应商进行身份验证,将非常有用。

docker-ce

这是社区版,也就是Docker公司的OSS版本。这是大多数人在Linux上安装docker时所想到的。此外,docker repos上目前提供了以下内容:

  • docker-ce-cli:您可以只安装命令行而不安装引擎,并将其用于远程访问其他docker上的docker引擎在最新版本的docker中,已做了大量工作来启用无根支持,因此您可以以用户身份而不是root.
  • docker-scan-plugin:身份运行引擎这是一个漏洞扫描程序,您可以将其用于映像。

Docker's website提供了安装docker-ce的说明。

docker-ee

这是企业版,是Docker Inc. .的一部分,被卖给了Mirantis。这个版本有一些额外的特性(自从拆分后我并没有密切关注它),但安装这个版本的主要两个原因是供应商支持(付费)和使用它作为其他商业产品的基础,如UCP和DTR,这是在Swarm/Kubernetes和注册服务器之上的UI。除非你一直在与Mirantis销售部门合作,并且有一个许可证密钥,否则我认为没有任何理由安装这个版本。

在docker.io和docker-ce之间选择

主要决定是从Linux发行版还是直接从docker Inc.安装Docker的OSS版本。需要考虑的几点:

  • Documentation上的Docker将专注于docker-ce.
  • Support,因为Docker Inc.希望您安装他们的版本。如果你是一个打包产品的开发人员,你只想支持你自己的packaging.
  • Patches,并且新版本将在docker.io之前从docker-ce获得,这才是公平的。这对于时间敏感型安全可能很重要issues.
  • Installing docker-ce需要添加另一个存储库到您的sources.list,这是另一个值得信任的供应商,以及每个修补程序要更新的软件包列表。
  • 如果您只需要CLI,以便可以在远程计算机(例如DOCKER_HOST=ssh://you@example.com docker ps)上访问docker,则需要使用docker-ce-cli软件包。

对我来说,如果您要设置一台专用机器来运行容器,请使用docker-ce。虽然如果你只是偶尔运行一个容器,不要遵循Docker Inc. .在上游做的事情,而是使用机器来完成许多其他任务,使用docker.io可以简化你的工作流。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45023363

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档