以前,要安装docker,我将使用
apt-get install docker.io
但是,我最近注意到安装docker的文档,它使用docker-ce。我试图找到两者之间的区别,但是空无一物。关于docker-ce,docker.io是什么?
docker.io
软件包由ubuntu开发人员维护。Ubuntu开发人员不隶属于“官方docker网站”。因此,码头工人网站未引用的事实基本上没有任何意义。
以前,要安装docker,我将使用
apt-get install docker.io
但是,我最近注意到安装docker的文档,它使用docker-ce。我试图找到两者之间的区别,但是空无一物。关于docker-ce,docker.io是什么?
docker.io
软件包由ubuntu开发人员维护。Ubuntu开发人员不隶属于“官方docker网站”。因此,码头工人网站未引用的事实基本上没有任何意义。
Answers:
较旧版本的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。
apt-get install docker.io
看起来比执行安装
apt install docker.io
就得到了Docker version 18.09.2, build 6247962
...那么与docker-ce有什么关系呢?我接受Ubuntu给我的东西。
接受的答案很复杂。
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
-大概再也不会回头了。docker.io
,如果Docker Inc.陷入瘫痪或docker-ce
由于其他原因停止进行常规(!)更新时,请切换到没有开发活动的生产系统。Debian在这方面拥有良好的声誉:即使docker.io
应该再次停止获取更新,许多库仍然会这样做。