shell - 如何修复 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-reload
和systemctl 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']
我不明白为什么我的图像不能在我的新安装上运行,而它在我以前的安装上运行。
谢谢 !
解决方案
我知道这是一个旧线程,但将解决方案放在这里对我有用。
使用docker import <dockeriamges.tar>
.
改用docker load --input <dockeriamges.tar>
解决了这个问题。
推荐阅读
- flutter - Flutter:ListView.builder 中的视频播放器(使用:Chewie)
- vaadin - Vaadin 10 按钮重定向到 URL
- python - 在 python 中使用 selenium 从动态网站获取数据:如何发现数据库查询的完成方式?
- hadoop - 用户 dr.who 的 Amazon EMR 垃圾邮件应用程序?
- vue.js - 使用 Vue SSR 渲染页面时的动态 publicPath
- javascript - 仅对 Node 8 或更高版本运行 coffeescript 测试
- r - 将数据框功能应用于栅格砖
- php - 无法访问受保护的属性 - Laravel 5.7 - Docker
- bash - Bash pip 搜索检查版本包含在标准输出中
- reactjs - 如何在 React Native 中正确导入/导出组件?