我经常读到这两个概念完全不同,但我找不到一个很好的解释来说明差异所在。捆绑依赖关系并限制与外界的对话。
我什么时候应该将我的应用打包到容器中进行部署?什么时候封装包装更可取?
我经常读到这两个概念完全不同,但我找不到一个很好的解释来说明差异所在。捆绑依赖关系并限制与外界的对话。
我什么时候应该将我的应用打包到容器中进行部署?什么时候封装包装更可取?
Flatpack 提供了一条线索,它的常见问题包括:
Flatpak 是一种容器技术吗?
它可以是,但它不是必须的。由于桌面应用程序需要进行大量更改才能在容器内运行时可用,您可能会看到 Flatpak 早期主要部署为一种方便的库捆绑技术,随着时间的推移,大多数应用程序将逐步采用沙盒或容器化。
一般来说,虽然我们在谈论 Flatpak 时尽量避免使用术语容器,因为它往往会引起与 Docker 和 Rocket 的比较,但由于这些技术试图解决的问题空间非常不同,这种比较很快就失去了技术意义。因此我们更喜欢使用术语沙盒。
Flatpak 是否与 Linux 相关联?
是的。我们明确地使用了 linux 内核的许多特性(绑定挂载、命名空间、seccomp 等)来创建运行 Flatpak 应用程序的沙箱。也许可以在其他内核上使用等效技术,但那将是一个非微不足道的工作量,我们不认为这是我们的优先事项之一。
容器旨在在任何实现其 runc/containerd 协议的系统上提供隔离,并且很快将在 Windows 和 Linux 上提供。
这与与操作系统密切相关的软件打包格式不同。
请参阅“ Flatpak、Appimage 和 Snap – 它们如何堆叠? ”。