我有一个 GPU 应用程序 Docker 映像。现在我想在 LXC 容器内运行支持 GPU 的 Docker 容器,但我无法这样做。
我的跑步方式是这样的:
lxc launch ubuntu plex -c nvidia.runtime=true -c nvidia.driver.capabilities=compute,utility
lxc config set plex security.nesting true
lxc exec plex sudo apt-get update
lxc exec plex sudo apt-get install docker.io
lxc exec plex docker run ubuntu ls
lxc config device add plex gpu gpu id=0
lxc exec plex docker run --gpus all ubuntu ls
最后一次执行带有 gpus 参数的 docker 容器会返回以下内容:
docker: Error response from daemon: could not select device driver "" with capabilities: [[gpu]].
ERRO[0000] error waiting for container: context canceled
当我运行 nvidia-smi 时,我能够看到 GPU。
然后我在 LXC 容器中安装了 nvidia-container-toolkit,然后再次尝试使用 gpus 运行容器,出现以下错误:
docker: Error response from daemon: OCI runtime create failed: container_linux.go:349: starting container process caused "process_linux.go:449: container init caused \"process_linux.go:432: running prestart hook 0 caused \\\"error running hook: exit status 1, stdout: , stderr: nvidia-container-cli: mount error: write error: /sys/fs/cgroup/devices/docker/41155b577716bc9b26bf64e1f930f40c5a81dbdd4eeb8d831f42c0b8728b00a5/devices.allow: operation not permitted\\\\n\\\"\"": unknown.
我甚至尝试在主 LXC 容器上将 security.privileged 设置为 true。然后,当我在设置特权条件后尝试重新启动容器时,它返回以下错误:
Error: Failed to run: /snap/lxd/current/bin/lxd forkstart plex /var/snap/lxd/common/lxd/containers /var/snap/lxd/common/lxd/logs/plex/lxc.conf:
我只是绞尽脑汁,仍然无法找到解决方案。不知道要实现这一点需要什么权限。任何解决方案都会有所帮助。
干杯!