Windows10 DockerDesktop 深度学习环境镜像构建

编程入门 行业动态 更新时间:2024-10-26 04:29:05

引言

最近在参加一个遥感目标检测比赛,要求将代码及运行环境打包成docker镜像发送过去,这里记录一下自己的镜像配置过程


Docker安装

在windows10上安装好DockerDesktop后,启动发现程序弹出报错窗口
参考链接解决了问题
由于下载国外镜像速度较慢,最好设置一下镜像加速。加速设置如下图所示
可用的镜像有

镜像加速地址
Docker 中国官方镜像https://registry.docker-cn
科大镜像站https://docker.mirrors.ustc.edu
阿里云https://<your_code>.mirror.aliyuncs

DockerDesktop将下载的镜像和中间产生的数据默认保存在C盘,非常占用C盘空间,建议将其修改到其他的盘下,可以参考链接

构建深度学习环境

docker安装还有很多其他的坑,上面只是列出了我当时遇到的,这里假设你的docker已经安装好了。docker中的每一个镜像可以理解为一个轻量的虚拟机,对于深度学习来说,首先需要安装一个基础的操作系统镜像,我这里选择的是nvidia/cuda:11.0.3-cudnn8-runtime-ubuntu18.04,其他版本镜像可以在dockerHub中搜到
打开我们的cmd,下载上述基础镜像

docker pull nvidia/cuda:11.0.3-cudnn8-runtime-ubuntu18.04
# 对应的还有一个nvidia/cuda:11.0.3-cudnn8-devel-ubuntu18.04版本
# runtime版本安装的cuda比较精简,cuda-11.0目录下没有bin目录也没有nvcc等指令,主要用于直接运行深度学习代码
# devel是开发版本,cuda安装的很全,同时镜像也更大,如果需要进行涉及cuda的编译开发等工作,需要下载这个镜像

下载完成后,可以使用指令docker images查看已下载的所用镜像,请记住刚刚下载的镜像ID

运行镜像得到一个对应的容器,如果把镜像比作类,那么容器就是镜像的一个实例对象

有的人在运行上述指令时可能会遇到报错

unknown flag: --gpus
See 'docker run --help'.

这是因为,虽然我们在容器里面构建了一个镜像操作系统,但是该系统使用的硬件(例如GPU)仍然是宿主机的,我们需要将宿主机的GPU映射到容器中,可以参考链接解决。如果–gpus all指令运行成功,将进入此容器的bash控制台,输入指令nvidia-smi后可以看到GPU相关的信息

上述ubuntu镜像是一个比较纯净的系统,一些基础的指令都没有,所以首先需要安装一些基础的包

apt update
apt install -y wget build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev libsqlite3-dev libbz2-dev liblzma-dev

接下来就是正常的安装python环节,当前目录为根目录/

mkdir python
cd python
wget https://www.python/ftp/python/3.7.13/Python-3.7.13.tgz
tar -xvf Python-3.7.13.tgz
cd Python-3.7.13
./configure --enable-optimizations
make
make install
cd /
rm -r python
ln -s /usr/local/bin/python3 /usr/local/bin/python
ln -s /usr/local/bin/pip3 /usr/local/bin/pip

现在就可以将我们的深度学习代码从宿主机移动到容器中了。首先Ctrl+P+Q退出容器,在cmd中输入指令

docker cp 本地目录 容器ID:容器目录

到这里整个基础的深度学习环境就搭好了,如果需要配置和代码相关的具体库,操作和在普通linux系统上配置没有区别(例如Pytorch的安装等等)

生成镜像

生成上述容器对应的镜像后,在其他主机的docker下运行该镜像就可以直接获得配置好环境的容器了,这大大节省了我们的时间!

# 生成容器对应的镜像
docker commit -m="描述信息" -a="作者" 容器ID 目标镜像名:TAG
# 镜像打包到本地
docker save 目标镜像名:TAG > 本地目录/压缩包名称.tar
# 导入压缩包镜像
docker load -i 本地目录/压缩包名称.tar

注意

Windows系统上的docker运行在wsl上的,wsl是windows下的一款linux虚拟子系统,所以本质docker还是运行在linux上。当前wsl对cuda的支持不是很好,就算按照上述步骤安装了环境,–gpus all 指令也正常,环境仍然可能无法正常使用GPU。—— 2022年10月10日

更多推荐

Windows10 DockerDesktop 深度学习环境镜像构建

本文发布于:2023-06-14 08:18:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1454943.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:镜像   深度   环境   DockerDesktop

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!