容器(即docker)和封装包装(即flatpack,snap)之间的概念和实际差异是什么?

Bof*_*fin 9 deployment docker flatpack snapcraft

我经常读到两个概念都完全不同,但我找不到关于差异所在的好解释.捆绑依赖关系并限制与外界的交谈.

我应该何时将应用程序打包到容器中进行部署?什么时候封装的包装更好?

Von*_*onC 4

Flatpack 提供了一些线索,其常见问题解答包括

\n
\n

Flatpak 是一种容器技术吗?

\n

可以是,但不一定是。由于桌面应用程序需要进行相当广泛的更改才能在容器内运行时可用,因此您可能会看到 Flatpak 在早期主要部署为一种方便的库捆绑技术,随着时间的推移,大多数应用程序将逐步采用沙箱或容器化。

\n

一般来说,尽管我们在谈论 Flatpak 时尽量避免使用术语“容器”,因为它往往会导致与 Docker 和 Rocket 进行比较,但由于这些技术试图解决的问题空间非常不同,这种比较很快就不再具有技术意义。因此我们更喜欢使用术语沙箱。

\n

Flatpak 与 Linux 绑定吗?

\n

是的。我们明确使用 Linux 内核的许多功能(绑定挂载、命名空间、seccomp 等)来创建 Flatpak 应用程序运行的沙箱。也许可以在其他内核上使用等效技术,但这将是一个非-工作量微不足道,我们不认为这是我们的优先事项之一。

\n
\n

容器的目标是在任何实现 runc/containerd 协议的系统上提供隔离,并且很快就会在 Windows 和 Linux 上实现。

\n

这与与操作系统密切相关的软件打包格式不同。
\n请参阅“ Flatpak、Appimage 和 Snap \xe2\x80\x93 它们如何堆叠? ”。

\n