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
.