与docker-ce和docker-ee有关的docker.io是什么?


119

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

apt-get install docker.io

但是,我最近注意到安装docker的文档,它使用docker-ce。我试图找到两者之间的区别,但是空无一物。关于docker-ce,docker.io是什么?


1
@zerkms我很困惑,因为官方docker网站没有提及docker.io。折旧了吗?
Will Parzybok

1
docker.io软件包由ubuntu开发人员维护。Ubuntu开发人员不隶属于“官方docker网站”。因此,码头工人网站未引用的事实基本上没有任何意义。
zerkms

1
@zerkms docker.io是否是最新的?
Will Parzybok

1
检查看看?packages.ubuntu.com/...
zerkms

现在,这完全可以再次使用!
thoni56

Answers:


73

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

docker-io软件包仍然是Debian / Ubuntu为其官方仓库中提供的docker发行版使用的名称。

docker-ce是由docker.com直接提供的认证版本,也可以从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/

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])

搬运工-CE二进制文件往往会是最新版本,包括码头工人-CE-CLI。


1
@Ivolmar非常感谢,因此在新的版本之一上使用docker.io会很愚蠢吗?
Will Parzybok

3
@WillParzybok正确。根据您的Debian或Ubuntu版本,你应该能够安装新的CE版本并删除旧版本的二进制文件
lvolmar

2
在Ubuntu 19.04中,docker.io版本稍早于docker-ce(18.09.5 v.18.06.3)。供应商版本和ppas通常比Ubuntu版本更早。对于使用ce over io的建议是否仍然适用的意见表示赞赏。
Reece

7
2019年5月21日感到困惑...在Ubuntu 18.04上使用什么?apt-get install docker.io看起来比执行安装
docker

1
刚做apt install docker.io就得到了Docker version 18.09.2, build 6247962...那么与docker-ce有什么关系呢?我接受Ubuntu给我的东西。
弗拉德

120

警惕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打包系统如此复杂是有原因的。一个很好的理由。

4
在我的2个节点中docker-ce卡住之后,而另一个docker.io节点在apt升级中幸存下来后,找到了这个答案。
陈敬韶

3
这使我专注于最喜欢的Debian / Ubuntu的docker.io软件包。apt install对于docker-ce而言,这还只是一个遥远的地方,我总是不得不去Docker文档来查找安装步骤。
Wlad

2
您可能要提到使用docker.io的安全隐患-一旦再次退出维护,您将不会收到安全补丁,即使不是这样,您也要依靠维护人员正确地向后移植每个安全补丁。
Benni

2
docker-ce的一个优点是您可以获得经过认证的发行版,您可以得到Docker团队的保证,即该软件包将与捆绑的依赖项一起使用。据推测,如果您遇到问题,手指指责会更少。docker.io的debian维护者是否证明 docker 在所有从属软件包的最新版本上运行?码头工人团队在包装测试方面是否做得足够好,其他任何团队都可以证明其发布?这里没有“最佳”解决方案,只是风险的平衡,您必须选择对您而言更重要的风险。
BobHy

@Bob我同意,这是一个折衷。只是不要忘了docker.io,如果Docker Inc.陷入瘫痪docker-ce由于其他原因停止进行常规(!)更新时,请切换到没有开发活动的生产系统。Debian在这方面拥有良好的声誉:即使docker.io应该再次停止获取更新,许多库仍然会这样做。
Lutz Prechelt
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.