GitHub 最近除了包注册表之外还发布了容器注册表。有什么不同?什么时候使用其中一种更好?我们两者都需要吗?
包通常很简单:它们本质上是一个包含内容(代码库、应用程序可执行文件等)的存档(即 zip 文件)和一个用包名称描述这些内容的清单文件(json 文档、xml 文件等)和版本号(至少)。 即:- npm、pip 和composer 包。
容器镜像也很简单,但它们更像是存档(即 zip 文件)而不是包。 即:- nginx、redis 等
结论:-如果某些库在任何项目中重复使用,那么我们可以创建包并在项目中使用。而对于所有基于项目的依赖项,我们需要选择容器来运行它。是的,我们两者都需要。
与一位使用 Docker 的朋友争论了一段时间后,我想我已经找到了令人满意的解释:
这有点令人困惑,因为一个包可以包含一个独立的应用程序,而容器通常会使用像 Apt 这样的包管理器来安装这些应用程序。我觉得这是对包管理的滥用,因为我们没有容器。最终我希望大多数应用程序将以容器形式交付。
包装
包是代码的集合。想象一下有人将代码放入一个盒子中并将其运送给您,以便您可以导入它并与您自己的代码结合使用。一个例子是可下载的版本库。
容器
容器就像一个虚拟环境,因此一切都可以完全按预期运行,因此您不必担心版本控制和兼容性。
总结
将套件视为汽车中的组件:启动系统、制动器等,只要这些组件能够协同工作,您就可以更换部件。可以将集装箱视为一辆全新的汽车。您可以直接启动它,而不必担心它的所有机制。