我知道这个问题的更通用版本,可以在这里找到:
然而,我想特别询问关于Docker的情况。它似乎已经成为许多Linux架构中相当重要的一部分。我个人对Docker有些疑虑,并且想知道这些疑虑是否也被Canonical所共享,导致他们不在自己的软件仓库中托管它。我还想知道我听到的关于Docker的信息是否更多是营销手段而非真实情况,因为这种情况经常发生。
Canonical有没有任何消息?或者也许Docker并没有像我听说的那样普及?
我知道这个问题的更通用版本,可以在这里找到:
然而,我想特别询问关于Docker的情况。它似乎已经成为许多Linux架构中相当重要的一部分。我个人对Docker有些疑虑,并且想知道这些疑虑是否也被Canonical所共享,导致他们不在自己的软件仓库中托管它。我还想知道我听到的关于Docker的信息是否更多是营销手段而非真实情况,因为这种情况经常发生。
Canonical有没有任何消息?或者也许Docker并没有像我听说的那样普及?
docker.io
软件包提供了最新版本的Docker。有一个常见的误解,认为docker.io
提供了一个非常旧的Docker版本。虽然这在今天大部分是错误的,但曾经确实如此。尽管docker.io
软件包位于官方存储库中,但你不会总是获得最新功能的最新Docker版本的更新。这并不特定于Docker。一般来说,同一Ubuntu版本中的官方软件包只会更新安全和严重稳定性错误,而不是新功能版本。(实际上,Docker的更新频率比大多数其他软件包要高一些,尽管你可以看到Ubuntu 18.04 LTS没有最新版本。)
docker.io
软件包位于宇宙仓库中,这意味着它由社区维护,而不是由Canonical员工维护。但这仍然是一个官方的Ubuntu仓库。尽管许多最重要的软件包都在主要或受限制的仓库中,并由Canonical维护,但Ubuntu官方仓库中绝大部分软件都是由社区维护而不是由Canonical维护。如果您希望通过docker.io
软件包安装Docker,但无法这样做,可能是因为您没有启用宇宙仓库。在这种情况下,您可以启用它。docker.io
是Ubuntu中的众多软件包之一,因为它也在Debian中存在。docker.io
软件包的打包方式与上游Docker软件包docker-ce
有很大不同(您可以通过启用上游Docker存储库来安装它,这似乎是大多数人选择安装Docker的方式)。基本上,docker.io
软件包在很大程度上依赖于其他软件包,而上游的docker-ce
软件包则包含了大部分自己的依赖项。正如Lutz Prechelt在关于docker-ce和docker-ee的docker.io是什么?中所解释的那样:
docker-ce
由docker.com提供,docker.io
由Debian提供。表面上看,这意味着您可以立即安装
docker.io
,而对于docker-ce
,您必须事先从docker.com附加一个外部存储库。然而,更重要的是,尽管这两个软件包都提供了正确发布的Docker版本,但它们具有非常不同的内部结构:
docker.io
采用Debian(或Ubuntu)的方式:每个外部依赖项都是一个单独的软件包,可以并且将会独立更新。docker-ce
采用Golang的方式:在构建之前,所有依赖项都被拉入源代码树中,然后整个过程形成一个单一的软件包。因此,您总是一次性更新docker及其所有依赖项。
该回答继续支持docker.io
所采取的方法。值得一读。
docker-ce
软件包的信息。
docker.io
是在 Debian 及基于 Debian 的发行版(如 Ubuntu)中维护的一个下游软件包。它并非由上游 Docker 项目提供或维护,尽管它的代码大部分来自该项目,并且本质上是相同的软件。据我所知,上游 Docker 项目不为 Debian 和 Ubuntu 中的docker.io
软件包提供支持。我猜测这可能是为什么他们的官方文档没有涵盖它的原因。 - Eliah Kagan