docker安装及其配置深度学习环境

docker安装及其配置深度学习环境


简介:

  • 本教程只简单教大家构建一个深度学习的docker环境, 不涉及docker细节知识,

  • 建议先花半个小时去b站,或者docker官方熟悉一下dokcer的基本知识 + docker常用的基本命令(可以参考本文第3节内容)

  • 使用docker可以在一个宿主机系统里面使用不同系统版本的docker容器,人话就是:如果你本机是ubuntu16.04的系统, 你现在需要使用ubuntu18.04或者ubuntu20.04或者其他系统版本。 以前解决方法是把16的系统重装成其他版本(一次只能在一个系统下进行操作),或者使用虚拟机。但使用了docker就可以不用安装其他系统,直接在ubuntu16源系统下,使用docker创建其他系统。狭隘讲:docker相当于轻量化的虚拟机。(该解释不严谨, 能听懂就行)

  • 镜像 + 容器:我们在使用虚拟机时候,需要一个镜像, 然后实例化镜像得到一个虚拟系统。docker使用同样需要一个镜像,然后用该镜像实例化得到一个容器,这里的容器相当于虚拟机系统(后续理解不了容器就把他当做一个系统)。

1 ubuntu下一键安装docker

  • 以新系统为例子, 老系统换过源的可以跳过换源这步
  1. apt换源 (国内请换下面的国内源,国外不用换)

清华源地址

  • 下面操作就是把/etc/apt/sources.list文件中内容替换成国内清华源
# 1 根据宿主机系统更换apt软件源
# ubuntu-18.04
echo "deb http://mirrors.ustc.edu.cn/ubuntu/ bionic main restricted universe multiverse" > /etc/apt/sources.list && echo "deb http://mirrors.ustc.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse" >> /etc/apt/sources.list && echo "deb http://mirrors.ustc.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse" >> /etc/apt/sources.list && echo "deb http://mirrors.ustc.edu.cn/ubuntu/ bionic-security main restricted universe multiverse" >> /etc/apt/sources.list

# ubuntu-20.04
echo "deb http://mirrors.ustc.edu.cn/ubuntu/ focal main restricted universe multiverse" > /etc/apt/sources.list && echo "deb http://mirrors.ustc.edu.cn/ubuntu/ focal-updates main restricted universe multiverse" >> /etc/apt/sources.list && echo "deb http://mirrors.ustc.edu.cn/ubuntu/ focal-backports main restricted universe multiverse" >> /etc/apt/sources.list && echo "deb http://mirrors.ustc.edu.cn/ubuntu/ focal-security main restricted universe multiverse" >> /etc/apt/sources.list

# 其他ubuntu版本请参考上面的清华源地址

# 2 查看宿主机系统apt软件源,有上面4条清华源地址打印即成功
cat /etc/apt/sources.list

# 3 更新软件源
sudo apt update
  1. 一键安装docker
  • 输入下面代码,按照提示进行安装docker,
wget http://fishros.com/install -O fishros && . fishros
  • 输入数字8:一键安装:Docker, 会自动完成docker的安装

  1. 显卡驱动
    切记 一定要在宿主机上安装显卡驱动,不然docker容器中无法共用显卡驱动

显卡驱动安装参考ubuntu20.04显卡驱动cuda cudnn conda TensorRT安装及配置的1.1节

安装后,执行下面语句, 有显卡信息输出即代表显卡驱动安装成功

# 宿主机终端执行, 
nvidia-smi

2 创建docker容器

创建docker容器相当于新建一个docker系统, 根据前面讲的,我们需要一个镜像才能创建容器。首先我们需要拉取一个镜像

2.1 获取镜像

docker镜像网站

获得镜像有很多种方法:

  1. dockerfile构建
  2. docker pull 拉取等其他方法。

这里主要针对深度学习cuda11.3环境进行搭建。所以我们直接拉取nvidia提供的cuda11.3的镜像。

创建一个ubuntu20.04, 带有cuda11.3的容器, 如果需要其他版本请查看链接nvidia/cuda

  • 方法1dockerfile构建
# dockerfile文件的基础镜像
FROM nvidia/cuda:11.3.1-devel-ubuntu20.04
  • 方法2docker pull

我们直接使用方法2docker pull拉取, 运行下面代码

sudo docker pull nvidia/cuda:11.3.1-devel-ubuntu20.04

大概4.94G左右大小,可能拉取需要一点时间。

2.2 使用镜像构建容器

  1. 查看下载好的镜像
sudo docker images

终端显示如下:

| REPOSITORY | TAG | IMAGE ID | CREATED | size |
| : ---- : | : ---- : | : ---- : | : ---- : | : ---- : |
|nvidia/cuda|11.3.1-devel-ubuntu20.04|c908607a5024|3 months ago|4.94G|

  1. 构建容器
sudo docker run -it --gpus all  --network host -v /tmp/.X11-unix:/tmp/.X11-unix --env="DISPLAY=$DISPLAY" -v ~/share:/share --name bev nvidia/cuda:11.3.1-devel-ubuntu20.04 /bin/bash

# 只共享显卡驱动和文件夹
sudo docker run -it --gpus all -v ~/share:/share --name bev nvidia/cuda:11.3.1-devel-ubuntu20.04 /bin/bash

本人使用下面代码构建容器:

sudo docker run -it --gpus all -v ~/share:/share --name bev nvidia/cuda:11.3.1-devel-ubuntu20.04 /bin/bash

构建后会自动进入docker容器中的/bin/bash终端, 输出如下:

==========
== CUDA ==
==========
CUDA Version 11.3.1
Container image Copyright (c) 2016-2023, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
This container image and its contents are governed by the NVIDIA Deep Learning Container License.
By pulling and using the container, you accept the terms and conditions of this license:
https://developer.nvidia.com/ngc/nvidia-deep-learning-container-license
A copy of this license is made available in this container at /NGC-DL-CONTAINER-LICENSE for your convenience.

要在docker里面使用显卡,务必加上--gpus all 参数

docker run参数说明:

-it -i参数表示让容器的标准输入保持打开,-t参数表示为容器分配一个伪终端

--gpus all 与宿主机共享gpu, 要在docker里面使用显卡,务必加上该参数

--network host 共享ip

-v /tmp/.X11-unix:/tmp/.X11-unix --env="DISPLAY=$DISPLAY" 可视化参数 共享窗口

 -v ~/share:/share 文件夹映射 宿主机目录:docker目录, 如果不存在目录会自动新建
 
--name  给容器命名,以便后续使用该容器, 自定义

其他参数可以参考docker官方文档

  1. 查看容器
# 在宿主机终端下运行下面代码,查看容器list
sudo docker ps -a
# 可以看到我们新建的bev容器信息,Exited代表stop状态,up代表启动状态
  1. 进入容器

一定要满足宿主机有显卡驱动, 才能在容器中执行nvcc -V有显卡信息

# 1 起宿主机新终端,将bev容器处于up状态, 状态可以用sudo docker ps -a查看
sudo docker restart bev

# 2 在宿主机新起一个终端,运行,运行这个必须保证bev处于up状态
sudo docker exec -it bev /bin/bash

# 3 容器中终端输入下面代码,有显卡信息输出,即代码容器可以和宿主机共用显卡驱动
nvidia-smi
# 如果没有显卡信息输出,请检测宿主机的显卡驱动是否安装成功 和 检测docker run命令是否加--gpus all参数

# 4 容器终端输入下面代码,查看cuda版本,
nvcc -V
# 输出如下
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2021 NVIDIA Corporation
Built on Mon_May__3_19:15:13_PDT_2021
Cuda compilation tools, release 11.3, V11.3.109
Build cuda_11.3.r11.3/compiler.29920130_0

2.3 docker容器中安装miniconda3

  1. 进入容器的终端
# 1 保证容器up状态后,进入容器的终端
sudo docker exec -it bev /bin/bash

# 2 可以查看一下我们的共享文件夹
# 进入/root目录,可以看到share文件夹,与宿主机种~/share目录内容一致,实现宿主机和容器中的文件互传
cd ~ && ls
  1. 换docker容器中的apt源

参考 第1节 ubuntu下一键安装docker的第一小点,以容器ubuntu20.04为例

# 1 ubuntu20.04换源 容器内的终端运行下面这句代码
echo "deb http://mirrors.ustc.edu.cn/ubuntu/ focal main restricted universe multiverse" > /etc/apt/sources.list && echo "deb http://mirrors.ustc.edu.cn/ubuntu/ focal-updates main restricted universe multiverse" >> /etc/apt/sources.list && echo "deb http://mirrors.ustc.edu.cn/ubuntu/ focal-backports main restricted universe multiverse" >> /etc/apt/sources.list && echo "deb http://mirrors.ustc.edu.cn/ubuntu/ focal-security main restricted universe multiverse" >> /etc/apt/sources.list

# 2 更新apt源
apt update

# 3 下载基本的包
apt install sudo vim wget git -y
  1. 安装conda
# 1 进入容器中的/root目录
cd ~

# 2 在root目录下载Miniconda3
wget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh

# 3 Miniconda3加权限
chmod +x Miniconda3-latest-Linux-x86_64.sh

# 4 安装Miniconda3, 根据终端提示一直确认即可
# Do you accept the license terms? [yes|no] 选yes
./Miniconda3-latest-Linux-x86_64.sh
  1. 激活容器中conda
# 1 进入conda目录
cd ~/miniconda3

# 2 初始化conda(激活)
./bin/conda init

# 3 退出docker,退出容器重新进入容器就可以发现conda已激活,
exit

# 4 宿主机终端,运行下面代码进入容器,运行这个代码必须保证bev处于up状态
sudo docker exec -it bev /bin/bash

重新进入容器后,容器内的终端前面就自带 (base) 环境了

  1. conda与pip换源
# 1 conda换源, 在容器终端中依次执行下面4句
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge 

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/

conda config --set show_channel_urls yes

# 2 pip换源 在容器终端中执行下面代码
mkdir ~/.pip && vim ~/.pip/pip.conf
# 将下面2句代码放入~/.pip/pip.conf后,输入:wq保存退出,即可换源成功
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple/

自此, ubuntu20.04-cuda11.3docker容器已经创建完成,可以像普通系统使用conda创建python虚拟环境部署深度学习算法。

同一个镜像可以起多个容器, 我导再也不用担心我的环境问题。


3 docker常用命令操作

  1. 去除docker命令行前的sudo权限,防止不加sudo出现docker without root permissions报错
#1 添加用户组
sudo groupadd docker

# 2 将当前用户添加至docker用户组, $USER为普通用户名
sudo gpasswd -a $USER docker

# 3 更新
newgrp docker
  1. 镜像常用相关命令
# 1 dockerfile文件构建镜像
sudo docker build -t ${image_name} -f ${dokerfile_name} .

# 2 查看本地镜像列表
sudo docker images

# 3 拉取远程镜像
sudo docker pull ${image_name}

# 4 删除镜像
sudo docker rmi ${image_name}

3 . 容器常用相关命令

# 1 使用镜像构建容器
sudo docker run -it --name ${container_name} ${image_name} /bin/bash

# 2 查看容器状态列表
sudo docker ps -a

# 3 命令行模式进入容器
sudo docker exec -it bev /bin/bash

# 下面的命令${container_name}可以患侧${container_id}
# 4 停止容器
sudo docker stop ${container_name}

# 5 启动容器
sudo docker start ${container_name}

# 6 重启容器 
sudo docker restart ${container_name}

# 删除容器  name可以换成id
sudo docker rm  ${container_name}

  • 如果您发现文章有错,请及时留言评论区,以免其他人犯同样的错误.
  • 如果您觉得文章对您有帮助,感谢您一键三连支持一波,^_^.
  • 欢迎加入Q-472648720,大家一起交流学习bev部署相关知识1+1>2😊.
  • BEV环视感知算法从环境部署代码复现工程汇总

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
要在Docker配置深度学习环境,您可以按照以下步骤进行操作: 1. 安装Docker:如果您还没有安装Docker,请根据您的操作系统(Windows、Mac或Linux)在Docker官方网站上下载并安装Docker。 2. 创建一个Docker镜像:您可以使用已经预先配置好的深度学习镜像,例如NVIDIA提供的nvidia-docker镜像,或者您可以自己构建一个包含必要组件和库的镜像。在这里,我们以自己构建镜像为例。 3. 编写Dockerfile:创建一个名为Dockerfile的文本文件,在其中定义您的镜像。以下是一个示例Dockerfile: ``` FROM nvidia/cuda:11.2.0-cudnn8-runtime-ubuntu20.04 # 安装系统依赖 RUN apt-get update && apt-get install -y \ python3 \ python3-pip \ git \ && rm -rf /var/lib/apt/lists/* # 安装深度学习相关库 RUN pip3 install tensorflow-gpu==2.4.1 \ keras==2.4.3 \ numpy \ matplotlib \ jupyterlab # 设置工作目录 WORKDIR /app # 复制项目代码到容器中 COPY . /app # 设置启动命令 CMD ["jupyter", "lab", "--ip=0.0.0.0", "--port=8888", "--allow-root"] ``` 在上述示例中,我们使用了基于Ubuntu 20.04的NVIDIA CUDA和cuDNN的运行时镜像,并安装了Python、Git以及一些常用的深度学习库。您可以根据自己的需求自定义Dockerfile。 4. 构建镜像:在创建好Dockerfile后,使用以下命令在终端中构建镜像(确保当前目录包含Dockerfile): ``` docker build -t deep-learning-env . ``` 这将会根据Dockerfile创建一个名为deep-learning-env的镜像。 5. 运行容器:运行以下命令启动一个容器,并将本地的一个目录挂载到容器中,以便在容器中进行文件的读写操作: ``` docker run -it --gpus all -v /path/to/local/directory:/app deep-learning-env ``` 在上述命令中,`/path/to/local/directory`是您本地文件系统中的目录,您可以将其替换为您自己的目录。这样,您就可以在容器中进行深度学习相关的开发和实验了。 希望以上步骤能帮助您成功配置深度学习环境。如有任何问题,请随时向我提问。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

全网最菜的Slamer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值