
Kubernetes 上调试 distroless 容器
TL;DR
本文内容:
- 介绍 distroless 镜像、作用以及简单的使用
- 如何针对 distroless 容器的进行调试
- 临时容器(v.1.18+)的使用
Distroless 镜像
Distroless 容器,顾名思义使用 Distroless 镜像作为基础镜像运行的容器。
“Distroless” 镜像只包含了你的应用程序以及其运行时所需要的依赖。不包含你能在标准 Linxu 发行版里的可以找到的包管理器、shells 或者其他程序。
GoogleContainerTools/distroless 针对不同语言提供了 distroless 镜像:
- gcr.io/distroless/static-debian11
- gcr.io/distroless/base-debian11
- gcr.io/distroless/java-debian11
- gcr.io/distroless/cc-debian11
- gcr.io/distroless/nodejs-debian11
- gcr.io/distroless/python3-debian11
Distroless 镜像有什么用?
那些可能是构建镜像时需要的,但大部分并不是运行时需要的。这也是为什么上篇文章介绍 Buildpacks 时说的一个 builder 的 stack 镜像包含构建时基础镜像和运行时基础镜像,这样可以做到镜像的最小化。
其实控制体积并不是 distroless 镜像的主要作用。将运行时容器中的内容限制为应用程序所需的依赖,此外不应该安装任何东西。这种方式可能极大的提升容器的安全性,也是 distroless 镜像的最重要作用。


