Docker和Snap之间的主要区别是什么?


85

在最近的一则文章(令人沮丧的薪水)中,有一篇关于Snap和Flatpak的文章。

在此处输入图片说明

这听起来与Docker非常相似,但很多概念是相同的。现在我的问题是Snap和Docker有什么区别?这些用例是否不同?

Answers:


109

您可能在Container Camp上找到了马克·沙特尔沃思(Mark Shuttleworth)的演讲“为什么我们纯粹需要为应用程序使用其他容器”与您的问题有关。他从一开始就大谈VM,容器和Docker,然后继续介绍快照以及它们在大约9分钟的时间内如何适应。这是我的总结:

  • 不同类型的容器外观相同,但用途不同。
  • 容器在内核级别并不真正存在。不同种类的幻想是可能的。我们可以独立地对容器看到的用户,网络,磁盘和进程产生错觉。
  • 实际上,不同类型的容器涉及创建的不同类别的幻觉。
  • 快照是:
    • 不可变,但仍是基本系统的一部分。
    • 根据网络进行集成,因此共享系统IP地址,这与Docker不同,在Docker中,每个容器都有自己的IP地址。
    • 换句话说,码头工人给了我们一个事情存在。Snaps 在这里给了我们一点东西。例如,在桌面上,快照可直接在其上提供应用程序。
    • 瞬间不会污染系统的其余部分。它在自己的盒子里。但是它仍然可以看到(只读)系统的其余部分,从而可以与系统进行对话并集成。

您询问了与Docker相比不同的用例。这是快照可以做到的,但是Docker无法做到:桌面应用程序。第三方可以使用快照发布桌面应用程序,并且用户可以轻松地安装和更新它们。Docker容器无法(轻松)在屏幕上以图形方式与用户进行交互,从用户的主目录加载文档或通过用户的网络摄像头提供视频会议。快照可以(一旦获得许可)。

您可能会问,这比使用PPA更好。但是与Docker相比,这就像问Docker比手动安装依赖项更好。更好,但是在一个单独的,非特定于Docker的问题中,如何最好地回答是最好的。


3
这不是真的。Docker可以与桌面应用程序进行交互(一旦获得许可)。github.com/jamrizzi/docker-gtk
Jam Risser

2
这听起来像Windows的Sandboxie。沙盒程序可以打开对话框,访问所有本地文件,但是在编写时,它们只是写入沙盒中。
feedc0de

1
您链接的该工具与普通docker有何不同?您可以将x11套接字安装到docker中,而无需任何特殊的docker版本。
feedc0de

1
这不是工具,而是演示
Jam Risser

1
@jamrizzi看起来您只是在给docker提供脚本访问X11套接字的权限。这远非让用户参与此过程(“ Docker想要访问显示。取消还是允许?”对话框在哪里?)
ThorbjørnRavn Andersen
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.