我安装完docker后运行测试命令,结果报错,过程如下:
运行的测试命令:
sudo docker run --rm --gpus all nvidia/cuda:11.0.3-base-ubuntu20.04 nvidia-smi
报错:
docker: Error response from daemon: 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: initialization error: nvml error: driver not loaded: unknown.
ERRO[0000] error waiting for container: context canceled
我本来打算不管了直接导入镜像然后启动算了,结果又报错,过程如下:
启动前先输入以下命令
xhost local:root
报错:
non-network local connections being added to access control list
然后我想强行启动,输入以下命令
sudo docker run --runtime=nvidia --rm -it -v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY -e XAUTHORITY -e NVIDIA_DRIVER_CAPABILITIES=all xtdrone:1.3
报错
docker: Error response from daemon: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: error during container init: error running hook #1: error running hook: exit status 1, stdout: , stderr: Auto-detected mode as 'legacy'
nvidia-container-cli: initialization error: nvml error: driver not loaded: unknown.
感觉问题应该是无法连接到gpu
执行以下命令
nvidia-smi
报错
NVIDIA-SMI has failed because it couldn’t communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.
我将内核降到5.4.0-80-generic,gcc和g++也降到7,然后重装驱动(docker镜像的驱动是470,我得下载跟他一致的驱动版本,不能下最新的)还是跟上面一样报错
有教程说要在软件与更新里选驱动,可是我的软件与更新里啥也没有
我的内核:Linux 5.15.0-56-generic
驱动版本:470.161.03
这个报错是因为本地没有 GPU 或者不是 NVIDIA,或者是在安装驱动程序时搞砸了。如果有支持 CUDA 的 GPU,建议使用 NVIDIA guide 安装驱动程序。如果本地没有 GPU,仍然可以使用 CUDA 构建图像,然后可以将其移动到有 GPU 的地方。
首先,你可以尝试检查你的docker是否正确安装并启动。你可以在命令行输入"docker -v"检查是否安装了docker,输入"systemctl start docker"来启动docker。
然后,你可以尝试卸载并重新安装你的nvidia驱动。你可以使用"sudo apt-get remove nvidia-*"卸载nvidia驱动,然后使用"sudo apt-get install nvidia-"重新安装nvidia驱动,注意需要替换成你所需要的驱动版本。
如果仍然无法解决问题,你可以尝试检查你的docker镜像是否已经损坏或者下载失败。你可以使用"docker images"查看你当前的镜像列表,如果你的镜像不存在或者状态显示为"none",你可以尝试重新下载镜像。
另外,你也可以尝试检查你的系统是否已经启用了nvidia runtime。你可以使用"sudo systemctl status nvidia-docker"检查是否启用了nvidia runtime,如果没有启用,你可以使用"sudo systemctl enable nvidia-docker"来启用nvidia runtime。
如果以上所有方法均无法解决问题,你可以尝试检查是否存在系统配置问题。你可以使用"sudo lspci | grep -i nvidia"查看你的系统是否检测到了nvidia设备,如果没有检测到,你可以尝试检查你的系统配置或者联系系统管理员查找原因。
此外,你也可以尝试使用"sudo docker logs "查看容器的日志,从中寻找可能的错误信息。
docker: Error response from daemon: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: error during container init: error running hook #1: error running hook: exit status 1, stdout: , stderr: Auto-detected mode as 'legacy'
nvidia-container-cli: initialization error: nvml error: driver not loaded: unknown.
docker:后台进程的错误响应:未能创建填充程序任务:
OCI运行时创建失败:runc创建失败:
无法启动容器进程:容器初始化期间出错:
运行hook#1时出错:运行hook时出错:退出状态1,stdout:,
stderr:自动检测到模式为“legacy”
nvidia容器cli:初始化错误:
nvml错误:未加载驱动程序:未知。
从你的报错,暂时想到这2个思路:
思路1:增加 NVIDIA_VISIBLE_DEVICES=void 环境变量,让容器继续执行不报无 gpu 错误
docker run -e NVIDIA_VISIBLE_DEVICES=void cuda_env_image
思路2:重装nvidia驱动
错误消息中提到了 "driver not loaded" 和 "error during container init",这可能是因为 Docker 容器无法访问宿主机上的 NVIDIA 驱动程序。
为了解决这个问题,可以试试以下步骤:
1、确保宿主机上已经安装了最新版本的 NVIDIA 驱动程序。
2、在启动 Docker 容器之前,使用以下命令将宿主机的 NVIDIA 驱动程序挂载到容器中:
sudo docker run --gpus all --device /dev/nvidia0:/dev/nvidia0 --device /dev/nvidiactl:/dev/nvidiactl --device /dev/nvidia-uvm:/dev/nvidia-uvm --device /dev/nvidia-uvm-tools:/dev/nvidia-uvm-tools nvidia/cuda:11.0.3-base-ubuntu20.04 nvidia-smi
如果以上步骤仍然无法解决问题,可以试试查看 Docker 容器的日志,看看是否有更多的提示信息。可以使用以下命令查看 Docker 容器的日志:
sudo docker logs <container_id>
仅供参考,望采纳,谢谢。