阿尔派尼(Alpine)镜像更小,因为其他软件包使用了许多库,这些库在您的解决方案中没有使用。
使用小型镜像有什么好处?
好处是:内存占用更少、性能更好、安全性和可维护性更高。
较小的Docker镜像可以减少磁盘空间占用,但是磁盘空间很便宜。
更重要的是,它还可以消耗更少的内存,而每台服务器的内存都是有限的。如果您减少服务器上的基础镜像数量,则也会减少所需的内存量。内存越少意味着交换次数越少,因此您可以通过将所有基础映像加载到内存中来获得一些性能改进。
另一个特点是,阿尔派尼(alpine)基础镜像使用更少的依赖库,这提高了总体安全性。您可以轻松地将风险与您的基本Alpine镜像分离,并使用仅使用真正需要的apk的顶部镜像。这在整体维护方面也具有优势。
您可以在https://hub.docker.com/r/library/node/tags/上看到,阿尔派尼版本没有漏洞。其他所有图像版本都存在一些问题,可能会针对您的解决方案的安全性。
为什么默认仍然是“buildpack-deps”,您可能应该使用它们?
当你阅读有关Node Docker镜像的官方文档时:
https://hub.docker.com/_/node/
主要的要点是:
- 您可以使用普通镜像,因为它基于“buildpack-deps”,这是许多镜像常用的基础。
- Alpine镜像非常小,并减少了所需内存的数量。特别是没有其他类型的docker容器安装。
对我来说,这意味着在大多数情况下,如果您使用其他基于“buildpack-deps”的镜像,则可以使用普通包。在这种情况下,它可能是更好的解决方案,因为您不需要在磁盘和内存上持有“alpine”基本映像。
结论
如果您的Docker环境中仅有“alpine”镜像,则应选择“alpine”,或者如果“node”容器的安全性对您非常重要,则应该选择“alpine”。
在大多数情况下,基于“buildpack-deps”的“node”镜像是合适的,因为您还有其他基于“buildpack-deps”的Docker容器。
未来,我认为将有越来越多的基于“alpine”的软件包可用,那么您应该选择node-alpine。