OCI运行时创建失败:container_linux.go:296 - 没有这样的文件或目录

时间:2018-02-02 16:24:38

标签: docker dockerfile

我的Dockerfile结尾:

ENTRYPOINT ["ls /etc"]

终端:

...Rest of the building  above is fine
Step 8/8 : ENTRYPOINT ["ls /etc"]
 ---> Using cache
 ---> ea1f33b8ab22
Successfully built ea1f33b8ab22
Successfully tagged redis:latest
k@Karls ~/dev/docker_redis (master) $ docker run -d -p 6379:6379 --name red redis
71d75058b94f088ef872b08a115bc12cece288b53fe26d67960fe139953ed5c4
docker: Error response from daemon: OCI runtime create failed: container_linux.go:296: starting container process caused "exec: \"ls /etc\": stat ls /etc: no such file or directory": unknown.

由于某种原因,它找不到目录/etc。我做了一个pwd,当前的工作目录是/。我还在入口点上做了ls /,显示/etc目录很好。

5 个答案:

答案 0 :(得分:7)

  

OCI运行时创建失败:container_linux.go:296

根据我的经验,这是docker守护程序本身的错误,而不是您尝试运行的容器。尝试删除所有容器,重新启动守护程序。我想我们还必须清理码头网络。

答案 1 :(得分:3)

我似乎遇到了同样的问题。这就是我在做的事情。

Dockerfile

FROM gcc:7.2.0
COPY  src/ /usr/src/myapp
WORKDIR /usr/src/myapp
RUN set -x gcc -o myapp main.c
CMD ["./myapp"]

构建

$ docker build -t test .
Sending build context to Docker daemon  3.584kB
Step 1/6 : FROM gcc:7.2.0
...
 ---> 3ec35c7d2396
Successfully built 3ec35c7d2396
Successfully tagged test:latest
SECURITY WARNING: You are building a Docker image from Windows against a 
non-Windows Docker host. All files and directories added to build context 
will have '-rwxr-xr-x' permissions. It is recommended to double check and 
reset permissions for sensitive files and directories.

运行

$ docker run -it test
D:\Docker Toolbox\docker.exe: Error response from daemon: OCI runtime create 
failed: container_linux.go:296: starting container process caused "exec: 
\"./myapp\": stat ./myapp: no such file or directory": unknown.

将CMD更改为ENTRYPOINT并删除了set -x似乎解决了问题。虽然我们仍然不确定原因是什么,或者这对你也有用。 确保/ etc存在或创建为main.c未编译。

Dockerfile

FROM gcc:7.2.0
COPY  src/ /usr/src/myapp
WORKDIR /usr/src/myapp
RUN gcc -o myapp main.c
ENTRYPOINT ["./myapp"]

答案 2 :(得分:2)

On OSX, I fixed it by clearing the volume data manually. Close docker, and remove everything in ~/Library/Containers/com.docker.docker

答案 3 :(得分:1)

更新Windows凭据后,我也遇到了相同的问题,请尝试以下操作:Docker设置>共享驱动器>重置凭据>再次选择驱动器>应用并重新输入凭据。这多次为我解决了问题

答案 4 :(得分:0)

您要在容器内执行的命令不存在。在这种情况下,图像中不存在ls /etc。有一个/bin/ls二进制文件,但没有一个/bin/"ls /etc"二进制文件,它本身将是无效的,因为文件系统上的文件名不能包含/,尽管它可以包含空格。 / p>

当然,您要运行的是带有参数ls的{​​{1}},为此,如果使用exec语法运行,则需要分隔每个参数。

/etc

或者,如果您想让Shell解析字符串,就像在命令行上运行ENTRYPOINT ["ls", "/etc"] 的容器中出现bash提示符一样,然后切换到运行Shell的字符串语法:

ls /etc