记录自己在服务器上制作深度学习docker环境的一些过程和坑。
1、安装docker,参考 https://www.runoob.com/docker/docker-tutorial.html
2、下载自己需要的镜像,可以在github上搜,比如pytorch的镜像 https://github.com/anibali/docker-pytorch
docker pull anibali/pytorch:cuda-10.0
3、通过docker images查看自己机器上有的镜像
4、创建容器并且进入(如果只是更新镜像内的软件包,可以不用挂载本地目录)
docker run -it -v D:/data:/app --name test anibali/pytorch:cuda-10.0 /bin/bash
红色是本机想要挂载在docker容器里面的文件夹,蓝色是docker容器内挂载本机红色路径对应的文件夹,紫色是镜像名字
5、进入容器后,下载一些自己需要的包,exit退出
6、docker ps -a查看本地容器
7、更新镜像
docker commit -m="update" -a="an" 79096af84806 an:pytorch
红色是描述信息,紫色是镜像作者名字,黄色是第6步中的container id,绿色是要创建的镜像名称
8、再通过docker images可以看到更新好的镜像
9、导出镜像
docker save an:pytorch > D:/an.tar
10、在另一台有gpu的机器上导入自己制作的镜像
docker load < /home/an.tar
11、创建容器并挂载gpu
docker run -it -v /home/data:/app -v /usr/local/docker-inspur/nvidia-volumes/volume:/usr/local/nvidia:ro --volume-driver=nvidia-docker --device=/dev/nvidiactl --device=/dev/nvidia-uvm --device=/dev/nvidia-uvm-tools --device=/dev/nvidia0 --device=/dev/nvidia1 --name ajp an:pytorch /bin/bash
蓝色是挂载gpu,不同机器情况不一样
卸载nvidia驱动
rmmod nvidia
卸载驱动如果出现nv_peer_mem进程在使用nvidia,下面命令stop nv_peer_mem
/etc/init.d/nv_peer_mem start/stop/status
卸载cuda相关,cd到cuda-x.x文件夹下,以10.0为例
cd /usr/local/cuda-10.0/bin
./uninstall_cuda_10.0.pl
查看nvidia相关进程
lsmod | grep nvidia
如果没有nvidia-uvm,需要去编译一下Samples,随便编译一个就可以
cd /usr/local/NVIDIA_CUDA-10.0_Samples/0_Simple/clock
make
./clock
docker启动
systemctl start docker
service docker start
重启docker服务
systemctl restart docker
sudo service docker restart
关闭docker
systemctl stop docker
service docker stop
如果/dev里面没有显卡,运行如下
for i in 0 1 2 3 4 5; do
node="/dev/nvidia$i"
rm -f $node
mknod $node c 195 $i || echo "mknod \"$node\""
chmod 0660 $node || echo "chmod \"$node\""
chown :video $node || echo "chown \"$node\""
done
node="/dev/nvidiactl"
rm -f $node
mknod $node c 195 255 || echo "mknod \"$node\""
chmod 0666 $node || echo "chmod \"$node\""
chown :video $node || echo "chown \"$node\""
本文详述了在Windows服务器上创建深度学习Docker环境的步骤,包括安装Docker、下载镜像、创建及更新容器、挂载本地文件夹、导出与导入镜像,并解决GPU挂载及CUDA相关问题。
1730

被折叠的 条评论
为什么被折叠?



