启动容器进程导致"exec: " /bin/sh\ ": stat /bin/sh: no such file or directory" : 未知



我想了解CMD和入口点的工作原理。因此,我刚刚创建了一个非常简单的Dockerfile

FROM scratch
CMD echo "Hello First"
ENTRYPOINT echo "Hello second" 

然后我构建了以下图像:

docker build -t my_image .

日志如下:

步骤1/3:从头开始--->步骤2/3:CMD Echo" Hello first" ----> 使用缓存---> 9F2B6A00982F步骤3/3:入口点Echo"您好 第二个" --->使用缓存---> 1BBE520F9526成功构建 1BBE520F9526成功标记了my_image:最新安全警告:您 正在从Windows构建Docker映像,以针对非窗户码头码头 主持人。添加以构建上下文的所有文件和目录 '-RWXR-XR-X'权限。建议仔细检查并重置 敏感文件和目录的权限。

当我创建此图像的容器时,它会返回:

docker run my_image

错误是:

Docker:守护程序的错误响应:OCI运行时创建失败: container_linux.go:344:启动容器进程引起的" exec: "/bin/sh ":stat/b in/sh:没有这样的文件或目录":未知。

有人可以帮助我有关错误吗?

这里有两件事。

启动FROM scratch的Dockerfile是从根本没有的基本图像开始的。它是完全空的。除了几个设备文件Docker为您推进外,没有一组基本工具或库或其他任何东西。

ENTRYPOINT echo ...命令被Docker重写为ENTRYPOINT ["/bin/sh", "-c", "echo ..."],并使CMD完全忽略。除非用docker run --entrypoint覆盖,否则这将成为容器运行的主要过程。

由于它是FROM scratch映像,并且根本没有任何包含壳,因此不包含外壳,因此"/bin/sh:否此类文件或目录"错误。

最新更新