Distroless Java Docker映像错误

时间:2018-06-29 17:07:49

标签: java docker

当我尝试使用非发行版的Java基本映像创建docker映像时, 当我包含诸如'mkdir','chmod'之类的任何shell命令时,都会出现以下错误 对此,我们将给予任何帮助。

  

OCI运行时创建失败:container_linux.go:348:启动容器进程导致“ exec:\” / bin / sh \”:stat / bin / sh:没有此类文件或目录”:未知

3 个答案:

答案 0 :(得分:1)

distroless提供了一个包含外壳的debug图像,以便您可以exec插入其中:

gcr.io/distroless/java:debug

debug图像包含busybox。您可以通过以下方式使用Docker运行此映像:

docker run -it --entrypoint "/busybox/sh" gcr.io/distroless/java:debug

如果您想使用distroless作为基础在Maven或Gradle项目中直接构建Java Docker映像,请签出Jib

答案 1 :(得分:1)

distroless 提供了一个包含 shell 的调试镜像。在 pom 中或从命令提示符运行 docker :

步骤如下:

Pom 变化:

<from>
    <image>gcr.io/distroless/java:11-debug</image>
</from>

docker 命令:

docker exec -it sh

答案 2 :(得分:0)

如果您查看list of things in the distroless base image,则其中仅不包含shell,mkdir,chmod或其他类似内容。 Java image添加了JVM,仅此而已。可能无法基于该图像在预建的jar中完成比COPY还要多的工作,并设置CMD指向它,也许会设置一些默认的ENV变量。

如果您需要标准Linux发行版中包含的基本工具,那么您希望从功能更强大的基本映像开始,例如标准openjdk映像。