You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法在LXC容器内运行启用NVIDIA GPU的Docker容器

问题

在LXC容器内运行需要GPU访问权限的Docker容器时启动失败,添加--gpus=all或--runtime=nvidia参数后触发报错,错误信息如下:

docker: Error response from daemon: failed to create task for container: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: error during container init: error running hook #0: error running hook: exit status 1, stdout: , stderr: Auto-detected mode as 'legacy'
nvidia-container-cli: mount error: failed to add device rules: unable to find any existing device filters attached to the cgroup: bpf_prog_query(BPF_CGROUP_DEVICE) failed: operation not permitted: unknown.

环境信息

  • 宿主机:Proxmox 8(基于Debian 12),已安装NVIDIA驱动(nvidia-smi验证可用)
  • LXC容器内NVIDIA驱动正常(nvidia-smi运行成功)
  • GPU:Nvidia Quadro K420
  • 驱动版本:470.199.02
  • CUDA版本:11.4
  • LXC已配置NVIDIA设备直通

当前LXC配置

# Allow cgroup access
lxc.cgroup2.devices.allow: c 195:* rwm
lxc.cgroup2.devices.allow: c 235:* rwm
lxc.cgroup2.devices.allow: c 511:* rwm
lxc.cgroup2.devices.allow: c 226:* rwm
lxc.cgroup2.devices.allow: c 239:* rwm
lxc.cgroup2.devices.allow: c 243:* rwm

# Pass through device files
lxc.mount.entry: /dev/nvidia0 dev/nvidia0 none bind,optional,create=file
lxc.mount.entry: /dev/nvidiactl dev/nvidiactl none bind,optional,create=file
lxc.mount.entry: /dev/nvidia-uvm dev/nvidia-uvm none bind,optional,create=file
lxc.mount.entry: /dev/nvidia-modeset dev/nvidia-modeset none bind,optional,create=file
lxc.mount.entry: /dev/nvidia-uvm-tools dev/nvidia-uvm-tools none bind,optional,create=file
lxc.mount.entry: /dev/dri dev/dri none bind,optional,create=dir

已尝试操作

  • 确认Docker与NVIDIA驱动独立运行正常
  • LXC以特权模式运行,非GPU型Docker容器可正常工作

解决方案

1. 扩展LXC容器权限配置

编辑LXC容器的配置文件(通常路径为/etc/pve/lxc/<CTID>.conf),添加以下内容:

# 允许BPF相关操作权限
lxc.cgroup2.allow: bpf
# 关闭AppArmor限制
lxc.apparmor.profile: unconfined
# 确保容器拥有完整特权
lxc.cap.drop:
lxc.privileged: 1

保存后重启LXC容器:

pct restart <CTID>

2. 强制nvidia-container-runtime使用nvidia模式

在LXC容器内创建/修改配置文件/etc/nvidia-container-runtime/config.toml,添加:

mode = "nvidia"

3. 验证cgroup2挂载状态

在LXC容器内执行以下命令,确认cgroup2正常挂载:

mount | grep cgroup2

需确保输出包含cgroup2 on /sys/fs/cgroup type cgroup2 (rw,nosuid,nodev,noexec,relatime,nsdelegate)

4. 重启Docker服务

在LXC容器内重启Docker使配置生效:

systemctl restart docker

5. 测试GPU容器运行

执行测试命令验证GPU访问是否正常:

docker run --rm --gpus all nvidia/cuda:11.4.0-base-ubuntu20.04 nvidia-smi

额外调试步骤

若问题仍存在,在LXC容器内运行以下命令检查nvidia容器工具状态:

nvidia-container-cli info

重点查看cgroup与设备权限相关的异常提示。

内容的提问来源于stack exchange,提问作者J J

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 12:52:36