在最近的c't(遗憾的是付费墙)有一篇关于 Snap 和 Flatpak 的文章。
这听起来与 Docker 非常相似,许多概念都相同。现在我的问题是 Snap 和 Docker 有什么区别?它们有什么不同的用例吗?
答案1
你可能会发现Mark Shuttleworth 在 Container Camp 上的演讲“为什么我们需要一个专门用于应用程序的不同容器”与您的问题相关。他一开始一般会谈论虚拟机、容器和 Docker,然后继续谈论 snap 以及它们在 9 分钟内如何发挥作用。以下是我的总结:
- 不同类型的容器看起来相同但用途不同。
- 容器实际上并不存在于内核级别。可能存在不同类型的幻觉。我们可以独立地创建容器所见的用户、网络、磁盘和进程的幻觉。
- 不同类型的容器实际上代表着所创建幻象的不同类别。
- Snap 包括:
- 不可变,但仍然是基础系统的一部分。
- 在网络方面集成,因此共享系统 IP 地址,与 Docker 不同,其中每个容器都有自己的 IP 地址。
- 换句话说,Docker 给了我们一个东西那里. Snaps 为我们提供了这样的东西这里。例如,在桌面上,快照可直接在其上提供一个应用程序。
- snap 不会污染系统的其余部分。它位于自己的盒子中。但它仍然可以看到(只读)系统的其余部分,这允许它与系统进行通信和集成。
您询问了与 Docker 相比的不同用例。Snap 可以实现但 Docker 不能实现的一个功能是桌面应用程序。第三方可以使用 Snap 提供桌面应用程序,用户可以轻松安装和更新它们。Docker 容器无法(轻松地)在屏幕上以图形方式与用户交互、从用户的主目录加载文档或通过用户的网络摄像头提供视频会议。Snap 可以(一旦获得许可)。
您可能会问这比使用 PPA 有什么好处。但与 Docker 相比,这就像问 Docker 比手动在系统上安装依赖项有什么好处一样。Docker 确实更好,但具体如何,最好在另一个非 Docker 特定的问题中回答。