docker: Error response from daemon: failed to create shim: OCI runtime create failed: unable to retrieve OCI runtime error (open /run/containerd/io.containerd.runtime.v2.task/moby/cdf3729f103e2f4cb94e25f3cfe6c21a3126428c0a977b7651ed5a77ab6d7/log.json: no such file or directory): runc did not terminate successfully:unknown.
本文章转自本人的个人博客网站中 Wing_Blog (bilibilidicks.love)
这个问题是我用阿里云跟着黑马项目报错的,跟我同样情况的可以往下看,如果相同情况下错误未解决可以私信我
先下载runc源码
RunC 是什么?
RunC 是一个轻量级的工具,它是用来运行容器的,只用来做这一件事,并且这一件事要做好。
我们可以认为它就是个命令行小工具,可以不用通过 docker 引擎,直接运行容器。
事实上,runC 是标准化的产物,它根据 OCI 标准来创建和运行容器。
而 OCI(Open Container Initiative)组织,旨在围绕容器格式和运行时制定一个开放的工业化标准
安装 runC
RunC 是用 golang 创建的项目,因此编译它之前需要在本地安装 golang 的开发环境。
安装安全计算模型 libseccomp
RunC 默认的编译配置是支持 seccomp 的,所以我们需要先安装libseccomp,
如果是centos系统的话,就安装 libseccomp-devel:
yum install -y libseccomp-devel
如果是ubuntu系统,就安装libseccomp-dev:
sudo apt install libseccomp-dev
安装runc需要go环境才可以安装
wget https://studygolang.com/dl/golang/go1.16.linux-amd64.tar.gz
tar -C /usr/local -xzf go1.16.linux-amd64.tar.gz
vi /etc/profile
添加配置
export GOROOT=/usr/local/go
export GOPATH=/home/gopath
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
配置生效:
source /etc/profile
检查go是否配置成功
go env
将下载好的runc源码解压到/user/local
tar -C /usr/local -xzf runc-1.0.3.tar.gz
进入runc-1.0.3目录后根据提示安装,如果make和make install用不了就根据报错的提示安装
安装完毕后再次利用docker运行nginx
无报错!问题解决