三个技巧 大幅减少 Docker 镜像体积
能会注意到差异,特别是当你处理预编译的二进制文件(如 Node.js C++扩展)时。例如,PhantomJS 的预构建包就不能在 Alpine 上运行。 你应该选择哪个基础镜像?你应该使用 Alpine、distroless 还是原始镜像? 如果你是在生产环境中运行容器,并且更关心安全性,那么可能 distroless 镜像更合适。添加到 Docker 镜像的每个二进制文件都会给整个应用程序增加一定的风险。只在容器中安装一个二进制文件可以降低总体风险。 例如,如果攻击者能够利用运行在 distroless 上的应用程序的漏洞,他们将无法在容器中使用 shell,因为那里根本就没有 shell! 请注意,OWASP 本身就建议尽量减少攻击表面。 如果你只关心更小的镜像体积,那么可以考虑基于...阅读全文