0


深度学习docker环境配置之nvidia-docker安装使用

简单介绍

–docker容器技术–。
简单理解:Anaconda用于隔离不同的python环境;docker可以理解成在你的机器里面安装了一个独立的系统,因此它可以隔离不同的CUDA环境,还有着独立的文件系统,防止别人删掉你的实验和环境等。

  • 镜像(images)的意思就是静态的镜像文件;
  • 容器(container)就是一个基于镜像的活跃着的系统,可以操作的实例,我们可以进去跑代码。

安装nvidia-docker(Ubuntu)

  • 前置条件:你得有一张显卡。
  • docker sudo apt-get install docker。查看是否安装好:docker
  • Nvidia Driver. NVIDIA驱动官网。查看是否安装好:nvidia-smi
  • 接下来安装nvidia-docker
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 |sudotee /etc/apt/sources.list.d/nvidia-docker.list
sudoapt-get update
sudoapt-getinstall -y nvidia-docker2
  • sudo systemctl restart docker 重启一下docker
  • 接下来你就可以愉快的使用nvidia-docker了

使用方法

在此之前,我们需要了解一下docker hub的一些仓库地址。在下方给出:

  • Nvidia/cuda官方docker hub
  • PyTorch官方docker hub

基于此,我们可以去拉取官方仓库,可以在tag当中搜索我们所需要的版本,一般是选择

devel

版本,其中包含了C++/CUDA编译环境、视频解码、渲染等,会比较全面些。然后在docker镜像去配置我们的深度学习环境。就像下面这样:

docker pull nvidia/cuda:11.8.0-devel-ubuntu22.04
# 它下载完成会生成IMAGE_ID,利用docker images去查看IMAGE_ID# 下面是去利用对应的镜像生成可用的容器,docker run -itd --runtime=nvidia --gpus=all -e NVIDIA_DRIVER_CAPABILITIES=compute,utility,video,graphics -v /root/Documents/xxx:/data/ --name test --privileged=true -v /dev/shm:/dev/shm -p 49154:22 IMAGE_ID /bin/bash
# -it必备 d表示在背景里运行; -v 磁盘挂载 本地绝对路径:容器的绝对路径; --name 给你的container取个响亮的芳名;-v /dev/shm:/dev/shm 共享内存; image ID; /bin/bash 执行命令; -p 端口映射 -p 49154:22# ** 若是关于--gpus=all报错,则把它去掉,前面的docker换成nvidia-docker再运行试试,若还是不行,那你就自己解决。# 在执行完上述命令后,会生成容器ID。然后我们进入容器:dockerexec -it container_id /bin/bash # container_id 替换成自己的容器ID# nvcc -V 查看cuda版本# 这样进去就会看到一个啥也没有的干净系统,你需要依次装上Python...等等工具

但是进去是一个裸环境,再去装Python,PyTorch,wget这些东西会很麻烦,有没有一键配置好这些,进去就可以直接用环境的呢?答案是有:利用Dockerfile。

Dockerfile构建镜像(推荐)

这里我也贴出来准备好的

Dockerfile

,如下所示,大家也可以根据需求自己修改,github文件地址在这。那我们怎么通过

Dockerfile

文件来构建镜像呢?用

docker build -t myubuntu:v1 .

来构建,其中

myubuntu

是你给它取的镜像名字,

v1

是版本,后面还有个点别忘记了。构建生成了镜像之后,就可以由上述的那样

docker run xxxxx

命令去开心的用的你的容器啦!

# docker pull pytorch/pytorch:1.11.0-cuda11.3-cudnn8-devel# 一般来说需要修改的是 FROM nvidia/cuda:10.0-devel-ubuntu18.04和torch版本,torch==1.4.0+cu100 torchvision==0.5.0+cu100# 你需要去找docker hub的镜像网站上去找对应的base镜像和torch版本
FROM nvidia/cuda:10.0-devel-ubuntu18.04
ENV LANG C.UTF-8
RUN APT_INSTALL="apt-get install -y --no-install-recommends"&&\PIP_INSTALL="python -m pip --no-cache-dir install --upgrade"&&\GIT_CLONE="git clone --depth 10"&&\rm -rf /var/lib/apt/lists/* \
           /etc/apt/sources.list.d/cuda.list \
           /etc/apt/sources.list.d/nvidia-ml.list &&\apt-get update &&\# ==================================================================# tools# ------------------------------------------------------------------DEBIAN_FRONTEND=noninteractive $APT_INSTALL\
        build-essential \
        apt-utils \
        ca-certificates \wget\git\vim\
        libssl-dev \curl\unzip\unrar\
        cmake \&&\# ==================================================================# python# ------------------------------------------------------------------apt-get update &&\DEBIAN_FRONTEND=noninteractive $APT_INSTALL\
        python3.8 \
        python3.8-dev \
        python3.8-distutils \&&\wget -O ~/get-pip.py https://bootstrap.pypa.io/get-pip.py &&\
    python3.8 ~/get-pip.py &&\ln -s /usr/bin/python3.8 /usr/local/bin/python &&\$PIP_INSTALL\
        numpy \
        scipy \
        pandas \
        scikit-image \
        scikit-learn \
        matplotlib \
        Cython \
        tqdm \&&\# ==================================================================# pytorch# ------------------------------------------------------------------#pip3 install torch==1.8.2+cu102 torchvision==0.9.2+cu102 torchaudio==0.8.2 -f https://download.pytorch.org/whl/lts/1.8/torch_lts.html$PIP_INSTALL\
        future \
        numpy \
        protobuf \
        enum34 \
        pyyaml \
        typing \&&\$PIP_INSTALL\
        --pre torch==1.4.0+cu100 torchvision==0.5.0+cu100 -f \
        https://download.pytorch.org/whl/torch_stable.html \&&\# ==================================================================# config & cleanup# ------------------------------------------------------------------
    ldconfig &&\apt-get clean &&\apt-get autoremove &&\rm -rf /var/lib/apt/lists/* /tmp/* ~/*

进阶使用方法

TODO

  • 配置文件修改文件系统的挂载
  • 增加端口映射的输出
  • 增加图形界面,利用VNC做可视化
  • 容器导出,导入

常用的docker命令整理

docker build -t myubuntu:v1 .# build Dockerfiledocker pull nvidia/cuda:10.2-devel-ubuntu18.04 # 拉取远端镜像docker run -itd --runtime=nvidia --gpus=all -e NVIDIA_DRIVER_CAPABILITIES=compute,utility,video,graphics -v /root/Documents/xxx:/data/ --name test --privileged=true -v /dev/shm:/dev/shm -p 49154:22 IMAGE_ID /bin/bash
# -it必备 d表示在背景里运行; -v 磁盘挂载 本地绝对路径:容器的绝对路径; --name 给你的container取个响亮的芳名;-v /dev/shm:/dev/shm 共享内存; image ID; /bin/bash 执行命令; -p 端口映射 -p 49154:22docker --help
docker pull pytorch/pytorch:latest #拉取仓库docker images #查看镜像dockerps#查看运行着的容器dockerps -a #查看所有容器dockerexec -it container-id /bin/bash # 进入容器 
ctrl+D # 退出容器docker start container-id # 启动容器docker stop container-id # 停止容器docker rmi image-id     # 删除镜像dockerrm container-id     # 删除容器

systemctl stop docker.service # 停止docker服务
systemctl start docker.service # 开启docker服务dockerexport container-id > name.tar #容器的导出,可以带着它到处跑,直接导出的是没有压缩过的,你可以自己压缩一下。# 还有,文件导出后它其实就不是一个运行着的实例了,它就变成了镜像。dockerimport name.tar # 容器导入

本文转载自: https://blog.csdn.net/qq_41776453/article/details/129794608
版权归原作者 开心的宇大帅 所有, 如有侵权,请联系我们删除。

“深度学习docker环境配置之nvidia-docker安装使用”的评论:

还没有评论