首页 > 解决方案 > 如何修复 Docker 中的 OCI 运行时创建失败

问题描述

我在新安装的 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 run 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']

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

谢谢 !

标签: shelldocker

解决方案


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

使用docker import <dockeriamges.tar>.

改用docker load --input <dockeriamges.tar>解决了这个问题。


推荐阅读