Alpine 图像更小,因为其他包使用了大量库,而您的解决方案并未使用这些库。
使用小图片有什么好处?
好处是:更少的内存、更好的性能、安全性和可维护性。
较小的 docker 映像会减少磁盘所需的大小,但 磁盘空间很便宜。
更重要的是它还消耗更少的内存,这在每台服务器上都是有限的。如果您减少服务器上的基本映像数量,这也会导致您根本需要更少的内存。更少的内存意味着您的交换也更少,因此您可以在将所有基本图像加载到内存中时获得一些性能改进。
另一个特点是,来自 alpine 的基础图像使用较少依赖的库,提高了整体安全性。您可以使用基本 alpine 映像和仅使用真正需要的 apk 的顶部映像轻松分离风险。这对整体维护也有好处。
您可以在https://hub.docker.com/r/library/node/tags/ 上看到,alpine 版本没有漏洞。所有其他映像版本都存在一些问题,这可能会针对您的解决方案的安全性。
为什么默认仍然是“buildpack-deps”以及为什么你应该使用它们?
当你阅读官方文档到 docker images for node 时:
https://hub.docker.com/_/node/
主要内容是:
- 您可以使用普通镜像,因为它基于“buildpack-deps”,很多镜像都使用这种方式。
- Alpine 图像非常小,并减少了所需的内存量。尤其是没有其他类型的docker容器安装。
对我来说,这最终意味着,如果您使用其他镜像构建在“buildpack-deps”上,那么您可以在大多数情况下使用普通包。在这种情况下,它可能是更好的解决方案,因为除了“buildpack-deps”之外,您不需要在磁盘和内存中保存“alpine”基础映像。
结论
如果您的 docker 环境中有“唯一”高山映像,那么您应该使用“高山”或者如果“节点”容器的安全性对您非常重要。
在大多数情况下,基于“buildpack-deps”的“节点”映像是合适的,因为您还有其他基于“buildpack-deps”的 docker 容器。
我假设将来会有越来越多的基于“alpine”的包可用,然后你应该使用 node-alpine。