当我尝试使用无发行版 java 基础映像创建 docker 映像时, 当我包含任何 shell 命令(如"mkdir"、"chmod"(时,我收到以下错误 非常感谢对此的任何帮助。
OCI 运行时创建失败:container_linux.go:348:启动容器进程导致"exec:\"/bin/sh\":stat/bin/sh:没有这样的文件或目录":未知
distroless
提供了一个包含 shell 的debug
映像,以便您可以exec
到其中:
gcr.io/distroless/java:debug
debug
图像包含忙碌框。您可以通过以下方式使用 Docker 运行此映像:
docker run -it --entrypoint "/busybox/sh" gcr.io/distroless/java:debug
如果您想使用distroless
作为基础直接在 Maven 或 Gradle 项目中构建 Java Docker 映像,请查看 Jib。
如果您查看无发行版基本映像中的内容列表,它只是不包括 shell、mkdir、chmod 或其他类似的东西。 Java 映像添加了 JVM,仅此而已。 可能无法基于该映像构建一个映像,该映像的功能远远超过在预构建的 jar 中COPY
,并设置指向它的CMD
,也许在此过程中设置一些默认ENV
变量。
如果您需要标准 Linux 发行版中包含的基本工具,那么您希望从功能更强大的基础映像(如标准 openjdk 映像(开始。
发行版提供了一个包含 shell 的调试映像。在pom或从命令提示符运行docker中:
步骤如下:
绒球变化 :
<from>
<image>gcr.io/distroless/java:11-debug</image>
</from>
码头工人命令:
Docker exec -it sh