docker创建ubuntu16.04容器(下)

本机显卡驱动 cuda10.0+cuddn7.6都已经安装完毕,现想在容器内使用主机的硬件环境

Docker CE 19.03(已支持GPU,无需再安装Nvidia Docker),并配置用户Docker权限。

1 创建Docker用户组并配置用户Docker权限。

创不创都可以看自己的需要;省略

2.拉取nvidia/cuda:10.0-cudnn7-devel-ubuntu16.04镜像,其他支持cuda的镜像可以在这里找到。

https://hub.docker.com/r/nvidia/cuda/tags/

docker pull nvidia/cuda:10.0-cudnn7-devel-ubuntu16.04

3.根据拉取的镜像创建容器。Docker命令可查。https://www.runoob.com/docker/docker-command-manual.html

docker images
docker run --name face-d1 --gpus all -itd nvidia/cuda:10.0-cudnn7-devel-ubuntu16.04

我这里报错:Error response from daemon: could not select device driver "" with c

  • 解决办法:1).
lspci -vv | grep -i nvidia

docker创建ubuntu16.04容器(下)_第1张图片

  • 2).安装NVIDIA Container Runtime
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

  • 3)安装docker-19.03:由于我已经安装完成,所以直接检查

验证docker版本是否安装正常:

docker创建ubuntu16.04容器(下)_第2张图片

  • 4).验证下-gpus选项

  •  5).运行利用GPU的Ubuntu容器

docker创建ubuntu16.04容器(下)_第3张图片

上述错误意味着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

 

4.根据拉取的镜像创建容器

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

 5.进入容器命令

docker exec -it face-d1 /bin/bash

6.整理完所有需要的包,可以将容器重新打包成镜像了

如果服务器磁盘资源有限,可以对无用的包和文件进行清理,减小镜像体积。

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

 

  • --author:作者信息;
  • -m:提交信息;
  • 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

7.连接服务器与文件传输

用户获得密钥后,按前文所述SSH连接教程连接至服务器。

使用MobaXterm可以通过sftp实现与本地的文件传输,还能在命令行中光标拖选后左键点击完成复制,右键直接粘贴等。MobaXterm提供了很多便捷的方法和工具,建议进行学习使用,能提高很多工作效率。

https://baijiahao.baidu.com/s?id=1593541647064594276&wfr=spider&for=pc

8.容器创建与使用

使用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

 

Errors were encountered while processing的解决办法,sudo apt-get upgrade遇到问题,sudo apt-get install遇到问题

解决方法:https://blog.csdn.net/Change0309/article/details/80096032

你可能感兴趣的:(环境配置,docker)