启动容器过程导致“ exec:\” / bin / sh \”:统计信息/ bin / sh:无此类文件或目录”:未知

时间:2019-02-22 05:52:35

标签: bash shell docker dockerfile

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

FROM scratch

CMD echo "Hello First"

ENTRYPOINT echo "Hello second" 

然后我构建此图像:

docker build -t my_image .

日志如下:

  

第1/3步:从头开始--->第2/3步:CMD回显“ Hello First” --->   使用缓存---> 9f2b6a00982f步骤3/3:ENTRYPOINT echo“ Hello   秒” --->使用缓存---> 1bbe520f9526成功构建   1bbe520f9526已成功标记my_image:最新安全警告:您   正在针对非Windows Docker从Windows构建Docker映像   主办。所有添加到构建上下文的文件和目录都将具有   '-rwxr-xr-x'权限。建议仔细检查并重设   敏感文件和目录的权限。

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

docker run my_image

错误是:

  

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

有人可以帮助我解决错误吗?

2 个答案:

答案 0 :(得分:6)

这里发生了两件事。

FROM scratch开头的Dockerfile从根本没有任何内容的基础映像开始。它是完全空的。除了Docker为您提供的几个设备文件之外,没有一组基础工具或库或其他任何东西。

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

由于它是FROM scratch图像,并且根本不包含任何内容,因此它不包含外壳程序,因此出现“ / bin / sh:无此类文件或目录”错误。

答案 1 :(得分:0)

我解决了一个类似的问题,用一个删除所有Docker镜像

docker rmi -f $(docker images -aq)

并重新启动Docker。

另一个选项是通过Docker桌面仪表板将其重置为出厂默认值。请注意,这将删除您的所有图像,容器,设置等。