如何修复Docker中的OCI运行时创建失败

时间:2019-04-30 13:18:40

标签: shell docker

我在新的Rasbian Stretch安装中导入了Docker映像。 该映像在先前的安装中运行良好(Rasbian Stretch也是如此)。 问题是:当我尝试使用bash命令在新安装上运行映像(但是使用npm start等启动)时,我遇到了这个问题:

$ docker run -ti nodejs:latest bash
docker: Error response from daemon: OCI runtime create failed:    container_linux.go:345: starting container process caused "exec: \"bash\": executable file not found in $PATH": unknown.

我尝试再次保存原始图像以再次执行导入并运行。但这总是相同的问题。

先前安装的docker版本为:18.04.0-ce 现在:18.09.0。

我尝试安装与以前相同版本的docker,但没有任何改变。

我也尝试使用以下解决方案:https://github.com/docker/for-linux/issues/561 其中说删除/lib/systemd/system/docker.service中的“ MountFlags = slave”行 但是我没有这个文件。所以我做到了:

grep -sr "MountFlags=slave" /

输出:

/lib/systemd/system/systemd-udevd.service:MountFlags=slave

因此,我去了/lib/systemd/system/systemd-udevd.service以在注释中添加“ MountFlags = slave”行。 然后我做了:systemctl daemon-reloadsystemctl restart docker

但是注意工作,我仍然遇到同样的问题。

最后这有效:     docker运行hello-world

我的Dockerfile:

    FROM node:8-jessie

RUN apt-get update
RUN apt-get install -y vim fswebcam 

# for mjpg_streamer
RUN apt-get install -y cmake libjpeg8-dev
RUN apt-get install -y gcc g++
EXPOSE 8080

WORKDIR /app
CMD ['npm', 'start']

我不明白为什么我的映像不能在我的新安装中运行,而在我以前的安装中运行。

谢谢!

3 个答案:

答案 0 :(得分:0)

只需在您的Dockerfile中明确安装bash
例如,在Dockerfile中更改此行:

  

运行apt-get install -y vim fswebcam bash

或 使用sh shell
例如,在运行命令中更改此内容:

  

docker run -ti nodejs:latest sh

答案 1 :(得分:0)

我找到了“解决方案”->我不知道为什么,但是我只是用dockerfile制作了映像。

答案 2 :(得分:0)

我知道这是旧线程,但是将解决方案放在这里对我有用。

代替使用导入docker镜像

docker load-输入

对我有用。