我在新的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-reload
和systemctl 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']
我不明白为什么我的映像不能在我的新安装中运行,而在我以前的安装中运行。
谢谢!
答案 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-输入
对我有用。