从头搭建pytorch Docker镜像

news2024/11/23 4:45:03

目录

  • 前言
  • 正文
    • 从docker hub下载镜像
    • 创建容器并运行
    • 更新容器
  • *安装python
  • *安装anaconda
  • 安装pytorch
  • 参考文献:

前言

此文不需要前言,请从正文开始

开始搭建

正文

默认大家都是有一定docker基础的,没有的话建议去花个20分钟学一下基础知识。相对于配置cuda来说,我觉得pytorch还是更简单一些。因此这里以官方的nvidia/cuda:10.2-cudnn8-runtime-ubuntu18.04为基础,构建pytorch深度学习环境。你可以根据自己的需求选择合适的版本,地址如下:cuda官方docker镜像地址,python可以选择官方纯净版,好处是小,坏处是什么都得自己配置。也可以选择conda,好处是省心,坏处是比较大

从docker hub下载镜像

docker pull nvidia/cuda:10.2-cudnn8-runtime-ubuntu18.04

下载完成后使用docker images确认镜像信息。

创建容器并运行

docker run -it --name pytorch1.12.1-cuda10.2  nvidia/cuda:10.2-cudnn8-runtime-ubuntu18.04 /bin/bash  # 这里镜像名称可以使用ID号,为了更清晰这个使用名称

PS: 一般创建运行后就会直接进入容器,如果没有,先使用docker ps -a查看容器信息,然后使用docker exec --it 容器ID /bin/bash进入容器内部。

更新容器

运行以下命令更新系统和安装基础包

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
apt clean
rm -rf /var/lib/apt/lists/*

这里可能出现的报错:

W: GPG error: https://developer.download.nvidia.cn/compute/cuda/repos/ubuntu1804/x86_64  > InRelease: The following signatures couldn't be verified because the public key is not available:  NO_PUBKEY A4B469963BF863CC
E: The repository 'https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64   InRelease' is not signed.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.

解决办法:

  • 1、获取gpg公钥
gpg --keyserver keyserver.ubuntu.com --recv-keys A4B469963BF863CC
  • 2、导出公钥,加入到 apt 信任密钥
gpg --export --armor A4B469963BF863CC | apt-key add -
  • 然后再运行上面的命令即可

*安装python

这里为了清晰的知道文件在哪,先新建临时目录,然后进入到目录下下载python源码包,再编译安装。

  • 首先新建并进入临时目录
    mkdir /temp
    cd temp
  • 下载python
    wget https://www.python.org/ftp/python/3.7.13/Python-3.7.13.tgz
  • 然后解压
    tar -xvf Python-3.7.13.tgz
  • 进入解压后的python文件夹
    cd Python-3.7.13
  • 编译安装
    –prefix用于指定安装位置
    –enable-optimizations用于优化配置
    ./configure --prefix=/usr/local/python3.7 --enable-optimizations
    ./configure --enable-optimizations
    编译步骤较为漫长,根据cpu核心数,使用-j选项采用多线程编译,可以加快编译速度 ,例如我的CPU核心数为8,线程数=核心数*
    make -j8
    make install
  • 建立建立指向python3.7和pip3.7的软链接
    ln -s /usr/local/python3.7/bin/python3.7 /usr/bin/python3.7
    ln -s /usr/local/python3.7/bin/pip3.7 /usr/bin/pip3

*安装anaconda

下载地址:https://repo.anaconda.com/archive/index.html
这里我以2021.05版本为例:

  • 下载安装
wget -c https://repo.anaconda.com/archive/Anaconda3-2021.05-Linux-x86_64.sh
# 安装
bash Anaconda3-2021.05-Linux-x86_64.sh

然后一直按enter直到出现需要输入yes。输入yes后会提示你安装路径

Anaconda3 will now be installed into this location:
/root/anaconda3

  - Press ENTER to confirm the location
  - Press CTRL-C to abort the installation
  - Or specify a different location below

[/root/anaconda3] >>>

这里可以填个自己的路径,记录一下,或者默认的也可以,按enter继续。
在这里插入图片描述
初始化,输入yes。这里也可以看到安装路径。

Do you wish the installer to initialize Anaconda3
by running conda init? [yes|no]
[no] >>> yes

在这里插入图片描述
然后会提示安装完成。
在这里插入图片描述

  • 配置环境变量
export PATH=~/anaconda3/bin:$PATH  # 添加环境变量
source ~/.bashrc  # 刷新bashrc

这里的export PATH填的是conda的bin文件地址。默认地址可以填上面那个到这里可以输入python和conda list查看是否安装成功。

  • 镜像源配置
    这里和python配置镜像源一样。
    打开配置文件
    vi ~/.condarc
    然后输入
channels:
  - http://mirrors.aliyun.com/anaconda/cloud/stackless
  - https://mirrors.aliyun.com/anaconda/cloud/simpleitk
  - https://mirrors.aliyun.com/anaconda/cloud/rdkit
  - https://mirrors.aliyun.com/anaconda/cloud/rapidsai
  - https://mirrors.aliyun.com/anaconda/cloud/qiime2
  - https://mirrors.aliyun.com/anaconda/cloud/pyviz
  - https://mirrors.aliyun.com/anaconda/cloud/pytorch3d
  - https://mirrors.aliyun.com/anaconda/cloud/pytorch-test
  - https://mirrors.aliyun.com/anaconda/cloud/pytorch
  - https://mirrors.aliyun.com/anaconda/cloud/psi4
  - https://mirrors.aliyun.com/anaconda/cloud/plotly
  - https://mirrors.aliyun.com/anaconda/cloud/omnia
  - https://mirrors.aliyun.com/anaconda/cloud/ohmeta
  - https://mirrors.aliyun.com/anaconda/cloud/numba
  - https://mirrors.aliyun.com/anaconda/cloud/msys2
  - https://mirrors.aliyun.com/anaconda/cloud/mordred-descriptor
  - https://mirrors.aliyun.com/anaconda/cloud/menpo
  - https://mirrors.aliyun.com/anaconda/cloud/matsci
  - https://mirrors.aliyun.com/anaconda/cloud/intel
  - https://mirrors.aliyun.com/anaconda/cloud/idaholab
  - https://mirrors.aliyun.com/anaconda/cloud/fermi
  - https://mirrors.aliyun.com/anaconda/cloud/fastai
  - https://mirrors.aliyun.com/anaconda/cloud/dglteam
  - https://mirrors.aliyun.com/anaconda/cloud/deepmodeling
  - https://mirrors.aliyun.com/anaconda/cloud/conda-forge
  - https://mirrors.aliyun.com/anaconda/cloud/caffe2
  - https://mirrors.aliyun.com/anaconda/cloud/c4aarch64
  - https://mirrors.aliyun.com/anaconda/cloud/bioconda
  - https://mirrors.aliyun.com/anaconda/cloud/biobakery
  - https://mirrors.aliyun.com/anaconda/cloud/auto
  - https://mirrors.aliyun.com/anaconda/cloud/Paddle
  - https://mirrors.aliyun.com/anaconda/pkgs/r
  - https://mirrors.aliyun.com/anaconda/pkgs/msys2
  - https://mirrors.aliyun.com/anaconda/pkgs/main
  - https://mirrors.aliyun.com/anaconda/pkgs/free
show_channel_urls: true

ssl_verify: true
allow_conda_downgrades: true

最后按esc,输入:wq保存退出。

  • 配置pip镜像
mkdir ~/.pip
cd ~/.pip/
vi pip.conf

然后输入

[global] 
index-url = http://mirrors.aliyun.com/pypi/simple/ 
[install] 
trusted-host=mirrors.aliyun.com

安装pytorch

pytorch安装相对很简单

  1. 点击这里进入打开pytorch官方
  2. 选择适合自己的torch版本,复制命令。注意conda和pip是分开的,cuda版本查看可以参考这篇文章
  3. 在容器中粘贴命令运行,在弹出时输入y继续运行,然后等待安装完成即可。
  4. 使用pip list/conda list查看是否有torch包,使用以下命令验证是否安装成功。
import torch
print(torch.__version__)

在这里插入图片描述

参考文献:

Pytorch Docker镜像构建教程(不同系统、CUDA、Python版本)
docker容器安装TensorFlow_gpu 版本遇到的坑。。。
Ubuntu18.04安装python3.7
27 | Ubuntu18.04.5 安装python3.7及卸载

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何利用极狐GitLab 轻松管理NPM依赖发布与更新?

本文来自: 任治桐 极狐(GitLab) 前端工程师 NPM 是 Node.js 的包管理工具,用来安装各种 Node.js 的扩展。本文将分享如何通过极狐GitLab,让 NPM 依赖发布更新更加快速和自动化,让你轻松管理依赖,拥有更多时间专注于核…

【Java|golang】1814. 统计一个数组中好对子的数目

给你一个数组 nums &#xff0c;数组中只包含非负整数。定义 rev(x) 的值为将整数 x 各个数字位反转得到的结果。比方说 rev(123) 321 &#xff0c; rev(120) 21 。我们称满足下面条件的下标对 (i, j) 是 好的 &#xff1a; 0 < i < j < nums.length nums[i] rev(…

算法之美~时间复杂度

时间复杂度 时间复杂度的全称是渐进时间复杂度&#xff0c;表示算法的执行时间与数据规模之间的增长关系1、只关注循环执行次数最多的一段代码2、加法法则&#xff1a;总复杂度等于量级最大的那段代码的复杂度3、乘法法则&#xff1a;嵌套代码的复杂度等于嵌套内外代码复杂度的…

文末有福利 | 零代码连接邮箱腾讯云企业网盘,附件管理超轻松

在日常工作中&#xff0c;想必大家每天都会收到各种各样的工作邮件&#xff0c;并且很多重要的文件材料也是通过邮件附件的形式来传输的&#xff0c;那么如何一站式管理这些文件&#xff0c;对于提高办公效率就至关重要了。关于邮件附件&#xff0c;相信大家也都碰到过这样的困…

【软件相关】Typora配置图片上传

文章目录0 前言1 确定需求2 开始配置2.1 软件储备2.2 插件安装2.3 gitee配置3 其他配置3.1 获取SMMS token参考链接0 前言 对于喜欢写Markdown文档的人来说&#xff0c;Typora无疑是一个写作利器&#xff0c;它有别于其他的Markdown软件&#xff0c;不是一边编辑一边渲染&#…

excel区分工时制度:如何计算996与955的工时差异

什么是996呢&#xff1f;是指早上9点上班&#xff0c;晚上9点下班&#xff0c;中午和晚上各有1小时吃饭时间&#xff0c;每周工作6天的工作模式。而955&#xff0c;也就是朝九晚五&#xff0c;中午就餐在工作时间内&#xff0c;但不能休息&#xff0c;共计8小时工作时间&#x…

[FUNC]在AHK中实现Pyhton的range函数

本文是用AutoHotkey复刻Python的range函数函数语法range(start, stop, step)参数说明&#xff1a;参数描述start计数从 start 开始。默认是从 0 开始。例如&#xff1a;range&#xff08;6&#xff09;等价于range(0,6)。stop计数到 stop 结束&#xff0c;但不包括 stop。例如&…

5、Ubuntu20常用操作_进程管理重定向和管道常用命令网络管理

进程管理 进程的概念 大家比较熟悉 Windows 下的可执行文件&#xff0c;就是那些扩展名为exe的文件。 大家知道&#xff0c;只需要鼠标双击这些程序&#xff0c; 就可以运行了。 程序运行起来后&#xff0c;我们把这个程序正在运行的 实例 称之为 进程 。 操作系统对每个进…

acwing86场周赛题解(模拟,dp,数学推导式)

目录 第一题&#xff1a;AcWing 4794. 健身 思路 核心代码 完整代码 第二题&#xff1a;4795. 安全区域 思路 核心代码 完整代码 第三题&#xff1a;4796. 删除序列 思路 核心代码 完整代码 谢谢您的阅读 第一题&#xff1a;AcWing 4794. 健身 4794. 健身 李华…

配置与管理DNS服务器

DNS概念 DNS是一种新的主机名称和IP地址转换机制&#xff0c;使用分层的分布式数据库来处理Internet上众多的主机和IP地址转换。当一个应用需要将域名翻译成为IP地址时&#xff0c;这个应用便成为域名系统的一个客户。这个客户将待翻译的域名放在一个DNS请求信息中&#xff0c;…

CHAPTER 10 Web服务与应用(二)

Web服务与应用10.1 Tomcat10.1.1 准备工作10.1.2 编写dockerfile10.1.3 创建tomcat用户和密码脚本文件10.1.4 编写启动脚本10.1.5 创建和测试镜像10.1.6 相关资源10.2 Jetty10.2.1 使用官方镜像10.2.2 相关资料10.3 LAMP10.3.1 使用官方镜像10.4 持续开发与管理10.4.1 Jenkins及…

[前端笔记——HTML介绍] 5.文档与网站架构

[前端笔记——HTML介绍] 5.文档与网站架构1.文档的基本组成部分&#xff08;1&#xff09;页眉&#xff08;2&#xff09;导航栏&#xff08;3&#xff09;主内容&#xff08;4&#xff09;侧边栏&#xff08;5&#xff09;页脚2.用于构建内容的HTML3.HTML布局元素细节3.1无语义…

205:vue+openlayer: 点击某feature,列表滑动,定位到相应的点的列表位置

第205个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+openlayers做一个互动,点击某个feature,在左侧的列表中显示出来,滚动条滑动,能显示在视觉区内。 直接复制下面的 vue+openlayers源代码,操作2分钟即可运行实现效果; 注意如果OpenStreetMap无法加载,请加载其…

HTB打靶(Active Directory 101 Resolute)

nmap扫描 nmap -A -T4 10.10.10.169 Starting Nmap 7.93 ( https://nmap.org ) at 2023-01-16 01:30 EST Stats: 0:00:04 elapsed; 0 hosts completed (1 up), 1 undergoing SYN Stealth Scan SYN Stealth Scan Timing: About 74.65% done; ETC: 01:30 (0:00:01 remaining) St…

Maven学习(一):Maven简介及安装配置

Maven简介及安装配置一、Maven简介1.1、Maven是什么1.2、Maven的作用二、Maven安装配置2.1、大前提2.2、Maven下载2.3、windows版1、安装2、配置环境3、配置本地仓库2.4、mac版1、安装2、配置环境3、需要注意的点4、配置本地仓库一、Maven简介 1.1、Maven是什么 先对Maven做一…

从 Spectral Clustring 推导到 Regularized Diffusion Process

Spectral Clustring 参考&#xff1a;bilibili 机器学习-白板推导系列(二十二)-谱聚类&#xff08;Spectral Clustering&#xff09; Background 首先看一种数据分布&#xff1a; 对于以上分布的数据&#xff0c;可以直接利用K−meansK-meansK−means或者GMM&#xff08;高…

2、linux_CentOS_6_64位常用命令远程操作--yum云用不了_建议学习Ubuntu

Linux的概述 学习Linux之前先了解Unix Unix是一个强大的多用户、多任务操作系统。于1969年在AT&T的贝尔实验室开发。UNIX的商标权由国际开放标准组织&#xff08;The Open Group&#xff09;所拥有。UNIX操作系统是商业版&#xff0c;需要收费&#xff0c;价格比Microsof…

洞悉获客之道,林肯汽车开展高端社区精准营销俘获消费者芳心

一、出场即焦点 全新领航员诠释顶级美式豪华“强大的外部气场&#xff0c;肌肉与优雅完美结合”&#xff0c;一直以来&#xff0c;美式豪华汽车以沉稳、古典的高端奢华气质演绎“出场即焦点”的恢弘气场&#xff0c;吸引着无数精英人士为之着迷、追捧。2022 年&#xff0c;林肯…

C/C++宏定义注意事项

宏定义后不能加“&#xff1b;”&#xff0c;如果想查找宏可能带来的bug,可以增加编译选项&#xff1a;/P&#xff0c;然后选择仅编译&#xff0c; 这时会生成*.i的文件&#xff0c;打开后可以看到编译器替换宏以后的实际内容&#xff0c;然后再去查看相关的替换有没有错误。带…

夏普MX-M2658N复印机显示请放入载体组件

故障描述: 一台夏普MX-M2658N复印机一开机就显示请放入载体组件,重新再次开机有可能不显示但是复印或打印的时候一定会卡纸,卡纸有时候卡在硒鼓附近或者加热组件的位置; 故障处理: 1、碳粉质量差; 2