无法使用 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 与非根用户仍然存在导致问题。
我从 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 与非根用户仍然存在导致问题。