在x86服务器上,使用ubuntu:20.04的镜像启动容器,设置–runtime=nvidia和–gpus参数,有什么具体区别? 我测试了下,发现–runtime=nvidia参数后,容器内并没有发现任何和CUDA相关的文件,无法使用nvidia-smi命令。而使用–gpus参数后,容器内则会出现一些cuda相关的文件,也可以正常使用nvidia-smi命令;
在使用 Docker 容器时,针对 NVIDIA GPU 的支持可以通过不同的参数来进行配置,主要有 --runtime=nvidia 和 --gpus 参数。这两者的具体区别如下:
--runtime=nvidia
--gpus
当你使用 --runtime=nvidia 参数启动容器时,Docker 会使用 NVIDIA Container Runtime,这是 NVIDIA 提供的一个专门用于支持 GPU 的容器运行时。使用该参数,Docker Daemon 会调用 NVIDIA Container Runtime 来管理容器中的 GPU 资源。
使用 --runtime=nvidia 参数时,需要确保以下几点:
nvidia-smi
--gpus 参数是 Docker 19.03 版本引入的,它提供了一种更加简化的方法来配置和使用 GPU。
使用 --gpus 参数时,可以指定要在容器内可见的 GPU 数量,例如 --gpus all 表示所有可用的 GPU,或者 --gpus device=0,1 表示使用 GPU 0 和 GPU 1。Docker Daemon 会自动管理 GPU 资源,并确保容器可以访问和使用这些 GPU。
--gpus all
--gpus device=0,1
使用 --gpus 参数时的特点:
如果你使用 --runtime=nvidia 后发现容器内无法使用 CUDA 相关工具,可以尝试在 Dockerfile 中或者容器启动后手动安装 CUDA 库和 NVIDIA 工具。或者考虑使用 --gpus 参数,以简化配置和确保容器内 CUDA 的正常使用。