Distroless Images

查看原文

Distroless Images 指的是整个镜像里面只有你的应用和运行时依赖,不要把其他任何包括 package manager,shell,其他可以在标准 Linux Distribution 里面找到的程序丢进去。这是很多大公司的实践,好处是可以减少 CVE 噪音,减少镜像源头。

  • 由于 Distroless 没带 shell,所以你要在 Dockerfile 中指定一个 ENTRYPOINT
  • 格式:ENTRYPOINT ['myapp'], 如果用 ENTRYPOINT myapp 会被 container runtime prefix 一个 shell
  • 使用 multi-stage build 的小技巧来丢掉构建过程的产物,只留下构建结果。
  • 其实还是建议保留一个 sh 在镜像里面万一真要查问题时死活进不去会很麻烦。docker run --entrypoint=sh -it my_debug_image.