本机显卡驱动 cuda10.0+cuddn7.6都已经安装完毕,现想在容器内使用主机的硬件环境
Docker CE 19.03(已支持GPU,无需再安装Nvidia Docker),并配置用户Docker权限。
创不创都可以看自己的需要;省略
https://hub.docker.com/r/nvidia/cuda/tags/
docker pull nvidia/cuda:10.0-cudnn7-devel-ubuntu16.04
docker images
docker run --name face-d1 --gpus all -itd nvidia/cuda:10.0-cudnn7-devel-ubuntu16.04
lspci -vv | grep -i nvidia
sudo curl -s -L https://nvidia.github.io/nvidia-container-runtime/gpgkey | \
sudo apt-key add -
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
sudo curl -s -L https://nvidia.github.io/nvidia-container-runtime/$distribution/nvidia-container-runtime.list | \
sudo tee /etc/apt/sources.list.d/nvidia-container-runtime.list
sudo apt-get update
$ apt-get install nvidia-container-runtime
which nvidia-container-runtime-hook
显示信息:/usr/bin/nvidia-container-runtime-hook
验证docker版本是否安装正常:
上述错误意味着Nvidia无法正确注册Docker。它实际上意味着驱动程序未正确安装在主机上。这也可能意味着安装了nvidia容器工具而没有重新启动docker守护程序:您需要重新启动docker守护程序。
建议验证是否安装了nvidia-container-runtime或者重新启动Docker守护进程。
问题到此解决!!!
列出GPU设备命令:
docker run -it --rm --gpus all ubuntu nvidia-smi -L
docker run -it --rm --gpus all ubuntu nvidia-smi --query-gpu=index,name,uuid,serial --format=csv
docker pull nvidia/cuda:10.0-cudnn7-devel-ubuntu16.04
docker images
docker run --name face-d1 --gpus all -itd nvidia/cuda:10.0-cudnn7-devel-ubuntu16.04
docker exec -it face-d1 /bin/bash
如果服务器磁盘资源有限,可以对无用的包和文件进行清理,减小镜像体积。
rm /root/Anaconda3-2019.07-Linux-x86_64.sh
conda clean -p # 删除没有用的包 --packages
conda clean -t # 删除tar打包 --tarballs
conda clean -y -all # 删除所有的安装包及cache(索引缓存、锁定文件、未使用过的包和tar包)
rm -rf ~/.cache/pip/* #删除pip缓存
使用exit关闭容器;
使用docker stop face-d1关闭后台运行的容器
使用docker ps -a查看容器的id
使用docker commit对其进行发布。-m为消息,-a为作者,后接容器ID与镜像名称:
docker commit -m="deep learning environment has been successfully built" -a="root" 7f80782fd16e face-d1
至此环境配置全部完成,后续可以分发密钥让每个用户从新的镜像进行容器创建并使用;
docker commit --author "jing" -m "deep learning environment has been successfully built" face_reg-d2 deeplearningenv/face-d3
指定新的标签(类似于一个版本管理)
docker tag deeplearningenv/face-d3:latest deeplearningenv/face-d3:v1
保存镜像
docker save -o face-d3.tar deeplearningenv/face-d3:latest
cksum校验两个保存的包是否相同 cksum 文件名 第一列为检验码,第二列为大小
镜像迁移 docker load -i face-d3.tar
docker images
docker run --name face_reg-d3 --gpus all -itd deeplearningenv/face-d3:latest
用户获得密钥后,按前文所述SSH连接教程连接至服务器。
使用MobaXterm可以通过sftp实现与本地的文件传输,还能在命令行中光标拖选后左键点击完成复制,右键直接粘贴等。MobaXterm提供了很多便捷的方法和工具,建议进行学习使用,能提高很多工作效率。
https://baijiahao.baidu.com/s?id=1593541647064594276&wfr=spider&for=pc
使用docker run来创建容器,这里建议多学习docker使用手册,上文中也有链接。其中-p为指定端口映射(有需要使用的话记得服务器防火墙也要打开对应端口),-v为指定目录共享(支持多目录映射)。
docker run --name test --gpus all -p 1088:80 -v /home/gaoqiang/data:/data -itd lab403:latest
screen也是非常便捷的多终端管理工具,可以跨终端进行后台程序管理,也强烈建议学习。
https://www.runoob.com/linux/linux-comm-screen.html
解决方法:https://blog.csdn.net/Change0309/article/details/80096032