无法使用 distroless-debug 访问 jarfile docker

Unable to access jarfile docker using distroless-debug

我从 distroless/java:8 切换到 distroless/java:8-debug 容器,当部署到 kubernetes 时,我开始收到以下错误: 错误:无法访问 jarfile /MyApp-0.1.jar

这是我的 Dockerfile:

FROM gcr.io/distroless/java:8-debug
LABEL CONTAINER_NAME=my-api
ARG JAR_FILE=MyApp/core/build/libs/core-0.1-boot.jar
COPY ${JAR_FILE} MyApp-0.1.jar
ENTRYPOINT ["java","-jar","/MyApp-0.1.jar"]

当我使用常规的 distroless 时(其他一切都一样),我没有遇到这个问题。 有趣的是,当我尝试在本地 运行 这个 Dockerfile 时,我没有收到这个错误。这是一些权限问题吗?

根据我从这个构建脚本中收集到的信息: https://github.com/GoogleContainerTools/distroless/blob/main/java/BUILD

这两个容器是相同的。只有调试版本包括 java 编译器

此外,您可以尝试 运行 容器本身的应用程序。 运行 类似于此:

docker run -it --entrypoint sh my-api

运行容器内的whoami验证用户是root,所以应该没有限制

我重新部署了,现在可以正常工作了。唯一合乎逻辑的解释是,我首先尝试使用非根用户,然后当我切换到根用户时,一些 pods 与非根用户仍然存在导致问题。