我正在寻找一种从 docker 容器内使用 GPU 的方法。
容器将执行任意代码,所以我不想使用特权模式。
有小费吗?
从之前的研究中,我了解到run -v和/或 LXCcgroup是要走的路,但我不确定如何准确地实现这一目标
run -v
cgroup
写一个更新的答案,因为大多数已经存在的答案现在已经过时了。
早于Docker 19.03要求nvidia-docker2和--runtime=nvidia标志的版本。
Docker 19.03
nvidia-docker2
--runtime=nvidia
由于 Docker 19.03 ,您需要安装nvidia-container-toolkit包,然后使用--gpus all标志。
nvidia-container-toolkit
--gpus all
所以,这里是基础知识,
包安装
根据Github上的官方文档安装nvidia-container- toolkit软件包。
nvidia-container- toolkit
对于基于 Redhat 的操作系统,请执行以下命令集:
$ distribution=$(. /etc/os-release;echo $ID$VERSION_ID) $ curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.repo | sudo tee /etc/yum.repos.d/nvidia-docker.repo $ sudo yum install -y nvidia-container-toolkit $ sudo systemctl restart docker
对于基于 Debian 的操作系统,执行以下命令集:
# Add the package repositories $ distribution=$(. /etc/os-release;echo $ID$VERSION_ID) $ curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - $ curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list $ sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit $ sudo systemctl restart docker
运行带有 GPU 支持的 docker
docker run --name my_all_gpu_container --gpus all -t nvidia/cuda
请注意,该标志--gpus all用于将所有可用的 gpus 分配给 docker 容器。
将特定 gpu 分配给 docker 容器(如果您的机器中有多个 GPU 可用)
docker run --name my_first_gpu_container --gpus device=0 nvidia/cuda
或者
docker run --name my_first_gpu_container --gpus '"device=0"' nvidia/cuda