为什么Docker不在官方的Ubuntu软件仓库中?

我知道这个问题的更通用版本,可以在这里找到:

为什么有些软件不在官方的Ubuntu软件仓库中?

然而,我想特别询问关于Docker的情况。它似乎已经成为许多Linux架构中相当重要的一部分。我个人对Docker有些疑虑,并且想知道这些疑虑是否也被Canonical所共享,导致他们不在自己的软件仓库中托管它。我还想知道我听到的关于Docker的信息是否更多是营销手段而非真实情况,因为这种情况经常发生。

Canonical有没有任何消息?或者也许Docker并没有像我听说的那样普及?

1个回答

Docker在官方的Ubuntu软件仓库中。docker.io软件包提供了它。还可以参考Launchpad页面
在最近的Ubuntu版本中,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有什么疑虑,或者你听到了什么关于它的消息,所以我无法直接回答这个问题。然而,在为什么有些软件不在官方Ubuntu软件库中?中提到过,Ubuntu是Debian的一个衍生版本,Ubuntu中的大部分软件都来自Debian。当然也有一些例外情况,但总体来说,当Ubuntu官方APT软件库中缺少潜在有用的软件时,那是因为没有人在Debian中打包和维护它;而当这些软件存在于软件库中时,那是因为有人已经做了这个工作。(Snap软件包则是另外一回事,它们并非从Debian导入。)
当Canonical在Ubuntu中维护一个软件包时,这有时确实反映了他们的选择。(其他时候,这只是因为你无法合理地运行系统而需要该软件包。即使你不从宇宙或多元宇宙存储库安装任何软件,Ubuntu也应该能正常工作。)但是,与Canonical维护相比,由社区维护是官方Ubuntu软件包最常见的状态,并且通常不反映Canonical或其他人的任何疑虑。docker.io是Ubuntu中的众多软件包之一,因为它也在Debian中存在。
请注意,在Debian和Ubuntu软件包中,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所采取的方法。值得一读。

请参阅如何在Ubuntu 16.04 LTS上安装Docker?Docker-CE或docker.io软件包以获取更多信息,包括有关安装上游docker-ce软件包的信息。

1哇,这个回答真是丰富而详尽! - Nacht
1我想知道为什么Docker自己的安装说明没有提到这个软件包。 - Nacht
2@Nacht docker.io 是在 Debian 及基于 Debian 的发行版(如 Ubuntu)中维护的一个下游软件包。它并非由上游 Docker 项目提供或维护,尽管它的代码大部分来自该项目,并且本质上是相同的软件。据我所知,上游 Docker 项目不为 Debian 和 Ubuntu 中的 docker.io 软件包提供支持。我猜测这可能是为什么他们的官方文档没有涵盖它的原因。 - Eliah Kagan
有人知道最近的Docker安装故障是否影响了使用"docker.io"包的用户吗?详细信息请参阅https://github.com/docker/for-linux/issues/830。 - Scott Stensland