docker用gpu的参数_[2020.12]基于Docker的深度学习环境的构建、迁移(附避坑指北)...

5a45a577cfcbd0a48bb068d4ecfddb77.png

0 更新记录

[2020年12月18日补更]

之前有写过一篇从0开始,带你从一台无OS的新机器从到到尾带你配置本地深度学习环境的文章,分享过来,希望有所帮助,见下方链接卡片

LotusPanda:[Ubuntu18+RTX2080Ti]从0开始搭建深度学习环境TensorFlow+PyTorch​zhuanlan.zhihu.com
db4031de89d41cfd6101ba65b9c81d11.png

[2020年12月14日补更]

开始添加 7 挖坑填坑指北 部分

[2020年12月13日补更]

添加 6 环境打包与迁移 部分

[2020年12月11日]

创建本文

1 前提条件:

  1. 实体机上已经安装英伟达驱动(这个不细说,直接从官方下载对应GPU驱动安装即可)
  2. 已经配置好Docker CE

docker引擎的安装方法参考下面两个链接

官方:

Install Docker Engine on Ubuntu​docs.docker.com
8c58826d8f96f0024e4a38fae16aaa5b.png

菜鸟教程:

Ubuntu Docker 安装​www.runoob.com

Docker CE,Docker EE, Docker CS的区别

Docker CE (Community Edition) is the simple classical OSS (Open Source Software) Docker Engine. Docker EE (Enterprise Edition) is Docker CE with certification on some systems and support by Docker Inc.
Docker CS (Commercially Supported) is kind of the old bundle version of Docker EE for versions <= 1.13.

2 拉取所需要的Nvidia Docker Image

这里因为nvidia对CUDA版本的相关更新,相关docker image的命名规则将发生变化,使用旧的命名方式拉去镜像将发生错误,官网原文如下图1所示。

1d894b23f27351455ed5762c26f68fa5.png
图1 Nvidia官方声明

但是上面的声明其实影响不大,只需要按照自己的需要选取所需要的镜像,在terminal中粘贴对应的指令即可。可选的docker image见下述网址:

Docker Hub【nvidia/cuda】​hub.docker.com

在选择版本的时候有三种选择:base、runtime、devel三种类型,区别见图2,可以安装devel版本。

c7c670efa0bd9c46e03acc5709a4e7b2.png
图2 三种版本镜像的区别

3 配置NVIDIA Container Toolkit

分别执行下面代码

Step1: Setup thestablerepository and the GPG key

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

Step2: Install thenvidia-docker2package (and dependencies) after updating the package listing

sudo apt-get update
sudo apt-get install -y nvidia-docker2

Step3: Restart the Docker daemon to complete the installation after setting the default runtime

sudo systemctl restart docker

Step4: 测试

sudo docker run --rm --gpus all nvidia/cuda:11.0-base nvidia-smi
#这里需要按照自己的情况进行相应的修改,all后面的参数要换成自己pull下来的Image的名字,
#这里nvidia/cuda:11.0-base只是范例

上面3步参考自官方教程,原始链接如下:

Installation Guide​docs.nvidia.com

4 启动镜像

为了方便实体机与从Image实例化后的Container交换文件,需要将一个目录进行映射,通过此目录,可以在实体机和Container进行文件的交换(通俗理解就是在两个世界上构建一个公共区域,这两个世界可以共享这个公共空间内的资源)

 sudo docker run -it --gpus all -P --name dl-base -v `pwd`:/host nvidia/cuda:11.0-base
# 这里也只是一个范例,需要理解各个参数的含义,并做对应的修改
# -P是对端口进行映射
# -v用来挂载宿主机的一个目录,冒号":"前面的目录是宿主机目录,后面的目录是容器内目录,
# 本例中是把当前目录pwd映射到Container的/host目录的意思

然后就可以进入这个新创建的Container进行操作了,就如同操作一台新的linux主机一样。

5 后续配置

然后就是安装anaconda等常规操作了,需要注意的是需要通过公共挂在文件夹进行anaconda.sh文件的共享。其它配置都和在正常的linux系统上操作一样。

6 环境打包与迁移

使用docker的一大目的就是为了将构建好的环境进行打包,并在另外一台机器上进行迁移。

step1:

首先要将配置好的容器(Container)提交成为一个新的镜像(Image)

docker commit [your-container-id] [your-backup-name]

step2:

之后将这个新的镜像导出为tar,以便拷贝到另外一台机器上(记为机器B)进行部署

docker save -o [path-you-want-to-save/your-backup-name.tar]] [your-backup-name]

step3:

在另外一台机器上(机器B)上按本文的1,2 部分完成配置,即配置好doceker引擎、配置好英伟达驱动、配置好NVIDIA Container Toolkit。

然后将打包为tar的Image导入到机器B的docker引擎的Image列表中

docker load -i [your-backup-name.tar]

通过上述命令的执行,就应该可以在机器B上的docker images命令下可以看到导入的这个Image。

然后重新通过这个导入的镜像在机器B上构建新的容器,命令如下,命令还是和本文第4部分相同,按自己的实际情况进行修改即可。

sudo docker run -it --gpus all -P --name [the name of the new container] -v `pwd`:/host nvidia/cuda:11.0-base

7 挖坑填坑指北

7.1 卸载docker

因为空间不足,进行了对docker进行了迁移,但是把docker搞崩了,因此有了 7.1 卸载docker这一部分,docker工作目录迁移部分待完美实践后再做补充。

使用dpkg查询已安装包,针对性删除

# 查询相关软件包
dpkg -l | grep docker
# 删除这个包
sudo apt remove --purge docker.io

64f526ec48377aba3658d2b2be919de6.png

7.1的参考链接:

如何在ubuntu 中彻底删除docker​cloud.tencent.com

7.2 docker工作环境空间不足

(待续...)

遇到问题的话欢迎评论区一起交流呀

点赞评论一波走,bug麻烦都没有~

3bb1a4a930edd5adfc360724dcf09501.png
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值