Error response from daemon: failed to create task for container: failed to create shim task: OCI runtime create failed: unable to retrieve OCI runtime error (open /run/containerd/io.containerd.runtime.v2.tas k/moby/00eb2b4636a9dcc6902c1b0d53fd9ef3a71984a07c04690a8be42c0c5df68919/log.json: no such file or directory): exec: “nvidia-container-runtime”: executable file not found in $PATH: unknown
时间: 2025-05-10 18:24:08 浏览: 43
### 容器创建失败的原因分析
容器创建失败可能由多种原因引起,其中提到的 `nvidia-container-runtime` 和 OCI 运行时错误是一个常见的问题。以下是针对该问题的具体分析:
#### 错误描述
当尝试启动基于 NVIDIA GPU 的容器时,如果出现如下错误信息:
```
failed to create shim task: OCI runtime create failed: nvidia-container-runtime executable not found in $PATH: no such file or directory
```
这表明系统无法找到 `nvidia-container-runtime` 可执行文件,或者其路径未正确配置到环境变量 `$PATH` 中。
---
#### 解决方案
1. **验证 `nvidia-container-runtime` 是否已安装**
需要确认 `nvidia-container-runtime` 已经正确安装并可用。可以通过以下命令检查是否存在可执行文件及其版本号:
```bash
which nvidia-container-runtime
nvidia-container-runtime --version
```
如果上述命令返回为空,则说明尚未安装或路径不正确[^1]。
2. **更新 `$PATH` 环境变量**
若 `nvidia-container-runtime` 存在于系统中但不在 `$PATH` 路径下,可以手动将其目录添加至 `$PATH`。例如,假设二进制文件位于 `/usr/bin/nvidia-container-runtime`,则可通过以下方式设置:
```bash
export PATH=$PATH:/usr/bin/
```
3. **重新配置 containerd 使用正确的运行时**
Containerd 默认可能会使用其他运行时(如 runc),因此需要显式指定 `nvidia-container-runtime` 作为默认运行时。编辑 containerd 配置文件(通常位于 `/etc/containerd/config.toml` 或通过 `containerd config default > /etc/containerd/config.toml` 自动生成),并将以下内容加入:
```toml
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.nvidia]
runtime_type = "nvidia"
[[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.nvidia.options]]
BinaryName = "/usr/bin/nvidia-container-runtime"
```
修改完成后重启 containerd 服务以应用更改:
```bash
systemctl restart containerd
```
4. **检查依赖项是否完整**
`nvidia-container-runtime` 正常工作还需要一些额外的支持库和驱动程序。确保已经安装了最新的 NVIDIA 驱动以及必要的工具包,例如 `libnvidia-container-tools` 和 `nvidia-docker2`。可以通过以下命令完成安装(适用于 Ubuntu 系统):
```bash
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/libnvidia-container/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt-get update && sudo apt-get install -y libnvidia-container-tools
```
5. **日志排查**
收集 containerd 日志可以帮助进一步定位问题所在。启用调试模式后查看日志输出:
```bash
journalctl -u containerd.service -f
```
同时保存 Falco 监控的日志以便后续审计,按照引用中的要求存储格式化后的数据:
```bash
falco -o json_output=true | awk '{print strftime("%Y-%m-%dT%H:%M:%S"), $0}' | grep 'nginx' | cut -d',' -f1-4 > /opt/course/2/falco.log &
sleep 30
kill %1
```
---
### 总结
通过对 `nvidia-container-runtime` 的存在性、路径配置、containerd 设置以及必要依赖项的逐一排查,能够有效解决因 OCI 运行时错误引发的容器创建失败问题。同时建议定期维护基础镜像和插件版本一致性,减少潜在冲突风险。
---
阅读全文
相关推荐












