我知道这个问题的更通用的版本,可以在这里找到:
但是,我想特别问一下 Docker。它似乎已经成为许多 Linux 架构的重要组成部分。我个人对 Docker 有一些疑虑,不知道 Canonical 是否也有同样的疑虑,这会导致他们不在自己的存储库中托管它。我还想知道我听到的关于 Docker 的东西是否更多的是营销而不是事实,通常情况如此。
Canonical 有消息吗?或者 Docker 可能并不像我听说的那样普遍?
答案1
Docker是在官方 Ubuntu 存储库中。 包裹docker.io
提供它。另请参阅启动板页面。
Ubuntu 最新发行版中的软件包版本docker.io
提供了最新版本的 Docker。人们普遍误以为docker.io
提供的 Docker 版本非常老旧。虽然曾经确实如此,但现在这种误会基本已经过时了。虽然软件包docker.io
位于官方存储库中,但实际上,因为它位于官方存储库中——您不会总是获得具有最新功能的最新版本的 Docker 更新。这并非特定于 Docker。一般来说,同一 Ubuntu 版本中的官方软件包会更新仅适用于安全性和严重的稳定性错误,不适用于新功能版本(实际上,Docker 已经更新更频繁地比其他大多数软件包都要好,不过你可以看到 Ubuntu 18.04 LTS没有最新版本。
包裹docker.io
在宇宙储存库,这意味着它是由社区而不是 Canonical 员工维护的。但这仍然是官方的 Ubuntu 存储库。尽管许多最重要的软件包都在主存储库或受限存储库中并由 Canonical 维护,但 Ubuntu 官方存储库中的绝大多数软件都是社区维护的,而不是由 Canonical 维护的。如果您希望通过软件包安装 Dockerdocker.io
但无法这样做,则可能是您没有启用 universe 存储库。在这种情况下,你可以启用它。
我不知道你对 Docker 有什么疑虑,也不知道你听说过什么,所以我无法直接回答这个问题。不过,正如为什么有些软件不在 Ubuntu 官方软件库中?, 乌班图是衍生品的Debian和大多数软件在 Ubuntu 中来自 Debian有一些例外,但大多数情况下,当 Ubuntu 官方易于存储库中,这是因为没有人在 Debian 中打包和维护它,而当它出现在这些存储库中时,这是因为有人有完成了。(Snap 包则是另一回事,因为它们不是从 Debian 导入的。
当 Canonical 在 Ubuntu 中维护软件包时(即当它在主存储库或受限存储库中时),这有时确实反映了他们的选择。(其他时候,它只是反映出没有该软件包您就无法真正合理地运行系统。即使您没有安装来自宇宙或多元宇宙存储库的任何软件,Ubuntu 也应该可以工作。)但由社区维护而不是由 Canonical 维护是官方 Ubuntu 软件包最常见的状态,通常并不反映 Canonical 或任何其他人的疑虑。docker.io
是 Ubuntu 中的众多软件包之一,因为它在 Debian 中。
请注意,docker.io
Debian 和 Ubuntu 中的软件包打包 Docker 的方式与上游Docker 包docker-ce
(您可以通过启用上游 Docker 存储库,这似乎是最多人们选择安装 Docker)。基本上,该docker.io
软件包广泛依赖于其他软件包,而上游docker-ce
软件包包含其自身的大部分依赖项。作为卢茨·普雷切尔特解释docker.io 与 docker-ce 和 docker-ee 有什么关系?:
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
包的信息。