两行命令搭建深度学习环境(Docker/torch2.5.1+cu118/命令行美化+插件),含完整的 Docker 安装步骤

深度学习环境的配置过于繁琐,所以我制作了两个基础的镜像,希望可以帮助大家节省时间,你可以选择其中一种进行安装,版本说明:

  • base 版本基于 pytorch/pytorch:2.5.1-cuda11.8-cudnn9-devel,默认 python 版本为 3.11.10,可以通过 conda install python==版本号 直接修改版本。
  • dl 版本在 base 基础上,额外安装了深度学习框架和常用工具,具体查看附录的安装清单。

如果你已经配置好了Docker,只需两行命令即可完成深度学习环境的搭建。对于没有 Docker 的同学,也不用担心,本文将提供详细的安装指引,帮助你一步步完成环境配置

P.S. 所有命令在 Ubuntu 18.04/20.04/22.04 下可以顺利执行(其余系统可通过文内链接跳转安装)。

文章目录

  • 镜像介绍
  • 快速配置环境(两行命令)
    • 1. 获取镜像(三选一)
      • 国内镜像版
      • 🪜科学上网版(直连)
      • 本地(网盘下载)
    • 2. 运行容器
      • 省流版
  • 安装 Docker Engine
    • 卸载旧版本
    • 使用 `apt` 仓库安装
  • GPU 驱动安装
  • 安装 NVIDIA Container Toolkit
  • 拉取并运行深度学习 Docker 镜像
  • 附录
    • 安装清单
      • base
      • dl

镜像介绍

所有版本都预装了 sudopipcondawgetcurlvim 等常用工具,且已经配置好 pipconda 的国内镜像源。同时,集成了 zsh 和一些实用的命令行插件(命令自动补全、语法高亮、以及目录跳转工具 z)。此外,已预装 jupyter notebookjupyter lab,方便进行深度学习开发,并优化了容器内的中文显示,避免出现乱码问题。其中还预配置了 Hugging Face 的国内镜像地址。

链接

  • quickstart,位于 Docker Hub,对应于下方的 pull 命令。
  • 百度云盘,直接下载对应的版本,跳过科学版的命令进行配置。

快速配置环境(两行命令)

如果遇到报错,查阅《Docker 基础命令介绍和常见报错解决》。

1. 获取镜像(三选一)

假设你已经安装并配置好了 Docker,那么只需两行命令即可完成深度学习的环境配置,以 dl 镜像为例,拉取:

国内镜像版

不可用的时候欢迎评论,我会对其进行替换。

sudo docker pull dockerpull.org/hoperj/quickstart:dl-torch2.5.1-cuda11.8-cudnn9-devel

🪜科学上网版(直连)

sudo docker pull hoperj/quickstart:dl-torch2.5.1-cuda11.8-cudnn9-devel

如果镜像有更新版本,可通过 docker pull 拉取最新镜像。

本地(网盘下载)

通过百度云盘下载文件(阿里云盘不支持分享大的压缩文件)。

同名文件内容相同,.tar.gz 为压缩版本,下载后通过以下命令解压:

gzip -d dl.tar.gz

假设 dl.tar 被下载到了 ~/Downloads 中,那么切换至对应目录:

cd ~/Downloads

然后加载镜像:

sudo docker load -i dl.tar

2. 运行容器

以容器名 dl 为例:

sudo docker run --gpus all -it --name dl hoperj/quickstart:dl-torch2.5.1-cuda11.8-cudnn9-devel /bin/zsh

如果需要使用 Jupyter,可以使用以下命令:

sudo docker run --gpus all -it --name dl -p 8888:8888 hoperj/quickstart:dl-torch2.5.1-cuda11.8-cudnn9-devel /bin/zsh

省流版

对于映射多个端口的同学,可以直接使用主机网络的配置(--network host

sudo docker run --gpus all -it --name dl --network host hoperj/quickstart:dl-torch2.5.1-cuda11.8-cudnn9-devel /bin/zsh

如果需要设置代理,增加 -e 来设置环境变量,也可以参考拓展文章a:

假设代理的 HTTP/HTTPS 端口号为 7890, SOCKS5 为 7891:

  • -e http_proxy=http://127.0.0.1:7890
  • -e https_proxy=http://127.0.0.1:7890
  • -e all_proxy=socks5://127.0.0.1:7891

融入到之前的命令中:

sudo docker run --gpus all -it \
  --name dl \
  --network host \
  -e http_proxy=http://127.0.0.1:7890 \
  -e https_proxy=http://127.0.0.1:7890 \
  -e all_proxy=socks5://127.0.0.1:7891 \
  hoperj/quickstart:dl-torch2.5.1-cuda11.8-cudnn9-devel \
  /bin/zsh

常用操作提前看

  • 启动容器docker start <容器名>
  • 运行容器docker exec -it <容器名> /bin/zsh
    • 容器内退出Ctrl + Dexit
  • 停止容器docker stop <容器名>
  • 删除容器docker rm <容器名>

如果还没有安装 Docker,继续阅读,可以根据实际情况通过目录快速跳转。

安装 Docker Engine

对于图形界面来说,可以跳过下面的命令直接安装 Desktop 版本(其中会提供 Docker Engine),这是最简单的方法。根据系统访问:

  • Linux
  • Mac
  • Windows

以下是命令行的安装命令,在 Ubuntu 上运行,其余系统参考官方文档。

卸载旧版本

在安装 Docker Engine 之前,需要卸载所有有冲突的包,运行以下命令:

for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done

apt-get 可能会报告没有安装这些包,忽略即可。

注意,卸载 Docker 的时候,存储在 /var/lib/docker/ 中的镜像、容器、卷和网络不会被自动删除。如果你想从头开始全新安装,请阅读 Uninstall Docker Engine 部分。

使用 apt 仓库安装

首次安装 Docker Engine 之前,需要设置 Docker 的 apt 仓库。

  1. 设置 Docker 的 apt 仓库。

    # 添加 Docker 的官方 GPG 密钥:
    sudo apt-get update
    sudo apt-get install ca-certificates curl
    sudo install -m 0755 -d /etc/apt/keyrings
    sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
    sudo chmod a+r /etc/apt/keyrings/docker.asc
    
    # 将仓库添加到 Apt 源:
    echo \
      "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
      $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
      sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    sudo apt-get update
    

    如果你使用的是 Ubuntu 的衍生发行版,例如 Linux Mint,可能需要使用 UBUNTU_CODENAME 而不是 VERSION_CODENAME

    如果 sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc 执行失败,尝试以下命令:

    sudo wget -qO- https://download.docker.com/linux/ubuntu/gpg | sudo tee /etc/apt/keyrings/docker.asc
    
  2. 安装 Docker 包。

    sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
    
  3. 通过运行 hello-world 镜像来验证安装是否成功:

    sudo docker run hello-world
    

    这个命令会下载测试镜像并运行,如果你看到以下输出,那么恭喜你安装成功:

    image-20241113173220588

GPU 驱动安装

如果需要使用 GPU 的话,先安装适用于你的系统的 NVIDIA GPU 驱动程序,访问任一链接进行:

  • NVIDIA CUDA Installation Guide for Linux
  • Official Drivers

这部分配置文章很多,偷个懒 😃 就不开新环境演示了,下面讲点可能不同的。

安装 NVIDIA Container Toolkit

为了在 Docker 容器中使用 GPU,需要安装 NVIDIA Container Toolkit。

注意,我们现在不再需要安装 nvidia-docker,官方在 2023.10.20 指出其已被 NVIDIA Container Toolkit 所取代,过去的配置命令可能已不再适用。

以下命令使用 Apt 完成,Yum 等其他命令访问参考链接:Installing the NVIDIA Container Toolkit。

  1. 设置仓库和 GPG 密钥

    设置 NVIDIA 的软件源仓库和 GPG 密钥,确保我们可以从官方源安装 NVIDIA Container Toolkit。

    curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
      && curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
        sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
        sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list。
    
  2. 安装 NVIDIA Container Toolkit

    sudo apt-get update
    sudo apt-get install -y nvidia-container-toolkit
    
  3. 配置 Docker

    使用 nvidia-ctk 工具将 NVIDIA 容器运行时配置为 Docker 的默认运行时。

    sudo nvidia-ctk runtime configure --runtime=docker
    
  4. 重启 Docker

    sudo systemctl restart docker
    

拉取并运行深度学习 Docker 镜像

现在可以拉取深度学习(dl)镜像,命令和之前一致。

  1. 拉取镜像

    sudo docker pull hoperj/quickstart:dl-torch2.5.1-cuda11.8-cudnn9-devel
    

    image-20241115163216096

  2. 运行镜像

    sudo docker run --gpus all -it hoperj/quickstart:dl-torch2.5.1-cuda11.8-cudnn9-devel
    
  3. 检查 GPU

    在容器内运行:

    nvidia-smi
    

    如果正确显示代表成功。不过对于实际使用来说,还需要了解基础命令和报错的解决方法。使用 Ctrl + D 或者命令行输入 exit 并回车退出容器,继续阅读《Docker 基础命令介绍和常见报错解决》。

附录

安装清单

base

基础环境

  • python 3.11.10
  • torch 2.5.1 + cuda 11.8 + cudnn 9

Apt 安装

  • wgetcurl:命令行下载工具
  • vimnano:文本编辑器
  • git:版本控制工具
  • git-lfs:Git LFS(大文件存储)
  • zipunzip:文件压缩和解压工具
  • htop:系统监控工具
  • tmuxscreen:会话管理工具
  • build-essential:编译工具(如 gccg++
  • iputils-pingiproute2net-tools:网络工具(提供 pingipifconfignetstat 等命令)
  • ssh:远程连接工具
  • rsync:文件同步工具
  • tree:显示文件和目录树
  • lsof:查看当前系统打开的文件
  • aria2:多线程下载工具

pip 安装

  • jupyter notebookjupyter lab:交互式开发环境
  • virtualenv:Python 虚拟环境管理工具,可以直接用 conda
  • tensorboard:深度学习训练可视化工具
  • ipywidgets:Jupyter 小部件库,用以正确显示进度条

插件

  • zsh-autosuggestions:命令自动补全
  • zsh-syntax-highlighting:语法高亮
  • z:快速跳转目录

dl

dl(Deep Learning)版本在 base 基础上,额外安装了深度学习可能用到的基础工具和库:

Apt 安装

  • ffmpeg:音视频处理工具
  • libgl1-mesa-glx:图形库依赖(解决一些深度学习框架图形相关问题)

pip 安装

  • 数据科学库
    • numpyscipy:数值计算和科学计算
    • pandas:数据分析
    • matplotlibseaborn:数据可视化
    • scikit-learn:机器学习工具
  • 深度学习框架
    • tensorflowtensorflow-addons:另一种流行的深度学习框架
    • tf-keras:Keras 接口的 TensorFlow 实现
  • NLP 相关库
    • transformersdatasets:Hugging Face 提供的 NLP 工具
    • nltkspacy:自然语言处理工具

一些库在安装时被自动安装,如 tensorflow 中的 keras

如果需要额外的库,可以通过以下命令手动安装:

pip install --timeout 120 <替换成库名>

这里 --timeout 120 设置了 120 秒的超时时间,确保在网络不佳的情况下仍然有足够的时间进行安装。如果不进行设置,在国内的环境下可能会遇到安装包因下载超时而失败的情况。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/917499.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

WebRTC视频 04 - 视频采集类 VideoCaptureDS 中篇

WebRTC视频 01 - 视频采集整体架构 WebRTC视频 02 - 视频采集类 VideoCaptureModule WebRTC视频 03 - 视频采集类 VideoCaptureDS 上篇 WebRTC视频 04 - 视频采集类 VideoCaptureDS 中篇&#xff08;本文&#xff09; WebRTC视频 05 - 视频采集类 VideoCaptureDS 下篇 一、前言…

AI在电商平台中的创新应用:提升销售效率与用户体验的数字化转型

1. 引言 AI技术在电商平台的应用已不仅仅停留在基础的数据分析和自动化推荐上。随着人工智能的迅速发展&#xff0c;越来越多的电商平台开始将AI技术深度融合到用户体验、定价策略、供应链优化、客户服务等核心业务中&#xff0c;从而显著提升运营效率和用户满意度。在这篇文章…

Blossom:开源私有部署的markdown笔记软件

在信息化、数字化时代&#xff0c;我们每个人的生活和工作都离不开笔记和知识管理。从简单的待办事项&#xff0c;到复杂的项目计划&#xff0c;再到存储大量个人知识的工具&#xff0c;如何选择一个高效、便捷且符合个人需求的笔记软件&#xff0c;成了许多人的难题。最近在逛…

Linux debian系统安装ClamTk开源图形用户界面(GUI)杀毒软件

一、ClamTk简介 ClamTk 是一个基于 ClamAV 的开源图形用户界面&#xff08;GUI&#xff09;杀毒软件。它使用 GTK2-Perl 脚本构建而成&#xff0c;支持32位与64位操作系统。ClamTk 提供了一个直观的用户界面&#xff0c;使得用户无需深入了解命令行即可完成大部分操作。它具备…

Linux 进程信号的产生

目录 0.前言 1. 通过终端按键产生信号 1.1 CtrlC&#xff1a;发送 SIGINT 信号 1.2 Ctrl\&#xff1a;发送 SIGQUIT 信号 1.3 CtrlZ&#xff1a;发送 SIGTSTP 信号 2.调用系统命令向进程发信号 3.使用函数产生信号 3.1 kill 函数 3.2 raise 函数 3.3 abort 函数 4.由软件条件产…

【大数据学习 | HBASE高级】hive操作hbase

一般在查询hbase的数据的时候我们可以直接使用hbase的命令行或者是api进行查询就行了&#xff0c;但是在日常的计算过程中我们一般都不是为了查询&#xff0c;都是在查询的基础上进行二次计算&#xff0c;所以使用hbase的命令是没有办法进行数据计算的&#xff0c;并且对于hbas…

微信小程序 https://thirdwx.qlogo.cn 不在以下 downloadFile 合法域名列表中

授权登录后&#xff0c;拿到用户头像进行加载&#xff0c;但报错提示&#xff1a; https://thirdwx.qlogo.cn 不在以下 downloadFile 合法域名列表中 解决方法一&#xff08;未完全解决&#xff0c;临时处理&#xff09;&#xff1a;在微信开发者工具将不校验...勾上就可以访问…

rk3399开发环境使用Android 10初体验蓝牙功能

版本 日期 作者 变更表述 1.0 2024/11/10 于忠军 文档创建 零. 前言 由于Bluedroid的介绍文档有限&#xff0c;以及对Android的一些基本的知识需要了(Android 四大组件/AIDL/Framework/Binder机制/JNI/HIDL等)&#xff0c;加上需要掌握的语言包括Java/C/C等&#xff0…

1. Django中的URL调度器 (项目创建与简单测试)

1. 创建 Django 项目 运行以下命令创建一个名为 blog_project 的 Django 项目&#xff1a; django-admin startproject blog_project2. 创建博客应用 Django 中&#xff0c;项目可以包含多个应用。创建一个名为 blog 的应用&#xff1a; cd blog_project python manage.py …

数据结构(初阶4)---循环队列详解

循环队列 1.循环队列的结构  1).逻辑模式 2.实现接口  1).初始化  2).判断空和满  3).增加  4).删除  5).找头  6).找尾 3.循环队列的特点 1.循环队列的结构 1).逻辑模式 与队列是大同小异的&#xff0c; 其中还是有一个指向队列头的head指针&#xff0c; 也有一个指向尾…

【蓝桥杯算法】Java的基础API

1. BigInteger 的使用 1.1. 判素数 package 模板;import java.math.BigInteger; import java.util.Scanner;public class 判素数 {static Scanner in new Scanner(System.in);public static void main(String[] args) {int q in.nextInt();while (q-- > 0) {BigInteger …

STM32设计井下瓦斯检测联网WIFI加Zigbee多路节点协调器传输

目录 目录 前言 一、本设计主要实现哪些很“开门”功能&#xff1f; 二、电路设计原理图 1.电路图采用Altium Designer进行设计&#xff1a; 2.实物展示图片 三、程序源代码设计 四、获取资料内容 前言 本系统基于STM32微控制器和Zigbee无线通信技术&#xff0c;设计了…

320页PDF | 集团IT蓝图总体规划报告-德勤(限免下载)

一、前言 这份报告是集团IT蓝图总体规划报告-德勤。在报告中详细阐述了德勤为某集团制定的全面IT蓝图总体规划&#xff0c;包括了集团信息化目标蓝图、IT应用规划、数据规划、IT集成架构、IT基础设施规划以及IT治理体系规划等关键领域&#xff0c;旨在为集团未来的信息化发展提…

Python毕业设计选题:基于django+vue的二手物品交易系统

开发语言&#xff1a;Python框架&#xff1a;djangoPython版本&#xff1a;python3.7.7数据库&#xff1a;mysql 5.7数据库工具&#xff1a;Navicat11开发软件&#xff1a;PyCharm 系统展示 管理员登录 管理员功能界面 用户管理 店铺管理 二手物品管理 广告管理 留言反馈 订单…

Android CoordinatorLayout:打造高效交互界面的利器

目录 一、CoordinatorLayout 介绍及特点 二、使用方法 2.1 创建 CoordinatorLayout 布局 2.2 添加需要协调的子视图 2.3 自定义 Behavior 三、结语 相关推荐 在Android开发中&#xff0c;面对复杂多变的用户界面需求&#xff0c;CoordinatorLayout以其强大的交互管理能力…

docker-hub 无法访问,使用windows魔法拉取docker images再上传到linux docker环境中

云机的服务器是可以docker拉取镜像的&#xff0c;但是本地的虚拟机、物理服务器等网络环境不好的情况&#xff0c;是无法访问docker-hub的&#xff0c;即使更换了docker镜像源国内源也无法使用。 本文章使用 在魔法网络环境下的windows&#xff0c;下载docker images后&#xf…

在Ubuntu22.04上源码构建ROS noetic环境

Ubuntu22.04上源码构建ROS noetic 起因准备环境创建工作目录并下载源码安装编译依赖包安装ros_comm和rosconsole包的两个补丁并修改pluginlib包的CMakeLists的编译器版本编译安装ROS noetic和ros_test验证 起因 最近在研究VINS-Mono从ROS移植到ROS2&#xff0c;发现在编写feat…

【linux学习指南】VSCode部署Ubantu云服务器,与Xshell进行本地通信文件编写

文章目录 &#x1f4dd;前言&#x1f320; 步骤&#x1f309;测试同步 &#x1f6a9;总结 &#x1f4dd;前言 本文目的是讲使用Vscode连接Ubantu,与本地Xshell建立通信同步文件编写。 查看本机系统相关信息&#xff1a; cat /etc/lsb*DISTRIB_IDUbuntu: 表示这是 Ubuntu 发行…

【JavaSE线程知识总结】

多线程 一.创建线程1.多线程创建方式一(Thread)2.多线程创键方式二(Runnable)3.线程创建方式三 二.线程安全问题解决办法1.使用同步代码块synchornized 2 .使用Lock解决线程安全问题 三.总结 线程就是程序内部的一条执行流程 一.创建线程 常用的方法 Thread.currentThread()…

用OMS进行 OceanBase 租户间数据迁移的测评

基本概念 OceanBase迁移服务&#xff08;&#xff0c;简称OMS&#xff09;&#xff0c;可以让用户在同构或异构 RDBMS 与OceanBase 数据库之间进行数据交互&#xff0c;支持数据的在线迁移&#xff0c;以及实时增量同步的复制功能。 OMS 提供了可视化的集中管控平台&#xff…