启动容器进程导致 "exec: \"/bin/sh\": stat /bin/sh: 没有这样的文件或目录":

starting container process caused "exec: \"/bin/sh\": stat /bin/sh: no such file or directory":

我正在尝试从 SCRATCH 在 centos 7 上构建一个 docker 图像。我执行了以下步骤:

FROM scratch
RUN rpm -ivh https://address/app.rpm
RUN YUM install tools 
...
...
CMD ["rpm","start"]

执行此操作后,我尝试使用命令构建此 docker文件 "docker build -t testsid -f ./dockerfile ."

现在我看到以下错误:

Sending build context to Docker daemon  3.072kB
Step 1/16 : FROM scratch
 --->
Step 2/16 : RUN rpm -ivh https://address/app.rpm
 ---> Running in d25a0a879d9e
OCI runtime create failed: container_linux.go:349: starting container process caused "exec: \"/bin/sh\": stat /bin/sh: no such file or directory": unknown

请让我知道是否有人对此有任何建议。 ?

任何意见都会非常有帮助。

谢谢。

FROM scratch 从一个完全空白的图像开始。容器文件系统中的唯一内容是 /dev/proc/etc 中 Docker 自动提供的文件。当您说 rpm 时,该命令不存在。字符串形式的 RUN 命令被包裹在 /bin/sh -c ... 中,但没有 /bin 目录。

FROM scratch 是 Docker 的高级用法。如果您对静态链接二进制文件以及裸字符串和 JSON-array CMD 之间的区别等概念非常熟悉,则可以使用它来制作一个非常小的图像。对于大多数典型用途,您至少要从某种分发和包管理器开始。

如果您需要 Red Hat 的包管理工具,最简单的 Docker 中心映像将从 centos:

开始
FROM centos:8 # includes rpm, yum, /bin directory
RUN rpm -ivh https://address/app.rpm
RUN yum install tools
...