为了使docker容器可以使用nvidia-docker,可以有如下几种办法:
1、无nvidia-docker
在早期的时候,没有nvidia-docker,可以通过在容器内再部署一遍nvidia GPU驱动(或者把驱动文件映射到容器里)解决。同理,其他设备如果想在容器里使用,也可以采用在容器里重新安装一遍驱动解决。例如:

docker run \
--device /dev/nvidia0:/dev/nvidia0 \
--device /dev/nvidiactl:/dev/nvidiactl \
--device /dev/nvidia-uvm:/dev/nvidia-uvm \
-v /usr/local/nvidia:/usr/local/nvidia \
-it --privileged nvidia/cuda

通过使用 --device 参数,我们可以指定要挂载的GPU设备,并通过 -v 参数将宿主机上的 nvidia gpu 命令行工具和相关依赖库挂载到容器中。这样,容器就可以直接访问和使用宿主机上的GPU设备了。然而,这种方法需要手动检查GPU的可用性(例如哪些GPU是空闲的等),效率较低。为了提高Nvidia GPU在docker中的易用性,Nvidia开发了自己的nvidia-docker工具,通过对原生docker进行封装,使得GPU资源更容易管理和分配。

2、nvidia-docker1.0
nvidia-docker是英伟达公司专门用来为docker容器使用nvidia GPU而设计的,设计方案就是把宿主机的GPU驱动文件映射到容器内部使用,可以通过tensorflow生成GPU驱动文件夹。
3、nvidia-docker2.0
nvidia-docker2.0对nvidia-docker1.0进行了很大的优化,不用再映射宿主机GPU驱动了,直接把宿主机的GPU运行时映射到容器即可。启动方式示例:

nvidia-docker run -d -e NVIDIA_VISIBLE_DEVICES=all --name nvidia_docker_test  nvidia/cuda:10.0-base /bin/sh -c "while true; do echo hello world; sleep 1; done"

4、安装docker-19.03及以上版本
docker19.03及以上版本,已经内置了nvidia-docker,无需再单独部署nvidia-docker了。安装方式如下:
安装docker:

yum install -y yum-utils
yum-config-manager     --add-repo     https://download.docker.com/linux/centos/docker-ce.repo
yum-config-manager --enable docker-ce-nightly
yum-config-manager --enable docker-ce-test
yum install docker-ce docker-ce-cli containerd.io
systemctl start docker

安装nvidia-container-toolkit

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

启动容器:

docker run --gpus all nvidia/cuda:10.0-base /bin/sh -c "while true; do echo hello world; sleep 1; done"

进入容器并输入nvidia-smi验证。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐