Ubuntu/Linux 安装Docker + PyTorch

文章目录

  • 1. 提前准备
  • 2. 安装Docker
    • 2.1. 卸载冲突软件(非必要)
    • 2.2. 在Ubuntu系统上添加Docker的官方GPG密钥
    • 2.3. 将Docker的仓库添加到Ubuntu系统的APT源列表中
    • 2.4. 安装最新Docker
    • 2.5. 检查
  • 3. 安装Nvidia Container Toolkit
    • 3.1. 在Ubuntu系统上添加官方GPG密钥和仓库
    • 3.2. 安装nvidia-container-toolkit
    • 3.3. 配置 Docker 使用 NVIDIA runtime
    • 3.4. 重启 Docker 服务
    • 3.4. 检测

1. 提前准备

显卡驱动:Ubuntu/Linux 安装GPU 驱动&检测(PyTorch准备)
CUDA:Ubuntu/Linux 安装CUDA、检测(PyTorch准备)
cuDNN:Ubuntu/Linux 安装cuDNN、检测(PyTorch准备)
可选ANACONDA:Ubuntu/Linux 安装Anconda、PyTorch、检测cuDNN、Jupyter Notebook

相关:
Develop like a Pro with NVIDIA + Docker + VS Code + PyTorch
https://github.com/anibali/docker-pytorch
How to Install PyTorch on the GPU with Docker

2. 安装Docker

2.1. 卸载冲突软件(非必要)

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

2.2. 在Ubuntu系统上添加Docker的官方GPG密钥

sudo apt update && sudo apt upgrade -y
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

2.3. 将Docker的仓库添加到Ubuntu系统的APT源列表中

# Add the repository to Apt sources:
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

2.4. 安装最新Docker

# Add the repository to Apt sources:
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

2.5. 检查

sudo docker run hello-world
Hello from Docker!
This message shows that your installation appears to be working correctly.

3. 安装Nvidia Container Toolkit

3.1. 在Ubuntu系统上添加官方GPG密钥和仓库

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 | sudo tee /etc/apt/sources.list.d/nvidia-docker.list

3.2. 安装nvidia-container-toolkit

sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit

3.3. 配置 Docker 使用 NVIDIA runtime

sudo nvidia-container-toolkit configure --runtime=docker

3.4. 重启 Docker 服务

sudo systemctl restart docker

3.4. 检测

docker run -it --gpus all nvidia/cuda:11.8.0-base-ubuntu22.04 nvidia-smi

命令解释
docker run: 这是 Docker 的命令之一,用于启动新的容器。
-it: 这组选项结合使用,-i 表示容器的 STDIN 是开放的,-t 分配一个伪终端。这使得容器在运行时保持交互式。
–gpus all: 这个选项指示 Docker 使用所有可用的 NVIDIA GPU。这要求你的系统已经安装了 NVIDIA Docker 支持,并且 Docker 配置为能够访问 GPU。
nvidia/cuda:×××-base-ubuntu×××: 这是要运行的 Docker 镜像。该镜像包含 CUDA ××× 工具,并且基于 Ubuntu ×××。这样的镜像通常用于需要 GPU 加速的应用程序开发和测试。
nvidia-smi: 这是 NVIDIA 管理和监控工具的命令,用于显示有关 NVIDIA GPU 的详细信息和状态,如温度、使用率、内存使用情况等。

在这里插入图片描述

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

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

相关文章

1688一键采购1000+商品||1688API数据采集接口||1688官方合作伙伴如何实现1688代采

货源采购是跨境电商卖家日常工作的一个重要部分,1688平台是很多卖家常用的货源采购平台。在1688平台采购时,很多卖家会进行批量采购,可能会达到上百甚至上千单,如果一件一件的采购,可能会浪费卖家大量的时间。我们可以…

【java9】java9新特性之改进JavaDocs

Java9在JavaDocs方面的主要新特性是,其输出现在符合兼容HTML5标准。在之前的版本中,默认的HTML版本是 HTML4.01,但在Java9及之后的版本中,JavaDocs命令行工具将默认使用HTML5作为输出标记语言。这意味着,使用JavaDocs工…

MemoryModule - exp - test

文章目录 MemoryModule - exp - test概述笔记测试环境GetModuleFileName不能正常执行GetModuleFileNameWntdll_LdrGetDllFullName猜测原因用LoadLibrary载入的DLL中功能是正常的 gLog可以正常使用内存载入DLL无法支持的功能的折中方法COM操作正常调用方代码接口代码 接口入参测…

Visual Studio的使用方法

目录 1. 下载软件 2. 软件安装 3. 软件使用 4. VS工具的字体背景美化 5. 程序调试 1. 下载软件 官网地址:Visual Studio 2022 IDE - 适用于软件开发人员的编程工具 (microsoft.com) 2. 软件安装 1.选中vs_Professional,鼠标右击选择“以管理员身份…

Capl复合数据类型:结构

结构是由一系列的相同或不同的数据类型构成的整体。结构中的每一项数据成为一个成员。每个成员可以有各自的数据类型。所有成员一起表示一个整体结构。 1.定义结构体类型 运行结果 2.修改结构体变量的成员。自定义一个常量给结构体变量的成员重新赋值即可。 3.定义一个结构体类…

【平时工作中的各种术语__持续更新~~~~】

中文: 1、jar包 JAR包(Java Archive Package)是一种将多个Java类文件以及与它们相关的元数据和资源(如文本、图片等)打包到一个单一文件中的归档工具。它基于ZIP文件格式。JAR文件主要用于分发和部署Java应用程序。J…

java期末复习

java jdk jre jvm .java-------->.class----jvm---->机器语言 编写源文件 编译源文件生成字节码 加载运行字节码 java语句执行顺序 顺序 选择 循环 异常处理 基本语法 方法格式 权限修饰符 返回值声明 方法名称(参数列表){方法中封装的逻辑功能;return 返回值;}–权…

Mybatis-Plus常用的增删改查坑

添加依赖 <!--实体类上加上Data注解就不用写get&#xff0c;set&#xff0c;toString&#xff0c;equals等方法了--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional…

Xshell连接提示“SSH服务器拒绝了密码”

原因1&#xff1a;数字锁没有打开 没有打开NumLock&#xff08;数字小键盘上面有一个【Num】按键&#xff09;&#xff0c;需要按键开启。 注意要检查NumLock灯是否亮起。 或者改成用字母键上面的数字键输入就好了。 原因2&#xff1a;root密码设置错误&#xff08;这个是比较常…

linux上安装Jmeter环境

以前都是在Windows本机上使用界面版Jmeter&#xff0c;今天试一下安装到linux上在linux中使用&#xff0c;Jmeter的使用需要先安装jdk环境然后再配置jmeter。 1.配置环境 linux环境&#xff1a;Centos 8.2 64位 JDK版本&#xff1a;jdk-8u221-linux-x64.tar.gz &#xff08;…

Python尝试安装 pyaudio 时遇到的错误信息表示安装过程失败,原因是找不到 Python.h 头文件

环境&#xff1a; Python 3.8.10 WSL2 问题描述&#xff1a; 尝试安装 pyaudio 时遇到的错误信息表示安装过程失败&#xff0c;原因是找不到 Python.h 头文件 error: subprocess-exited-with-error Building wheel for pyaudio (pyproject.toml) did not run successfully…

一篇详解Git版本控制工具

华子目录 版本控制集中化版本控制分布式版本控制 Git简史Git工作机制Git和代码托管中心局域网互联网 Git安装基础配置git的--local&#xff0c;--global&#xff0c;--system的区别 创建仓库方式1git init方式2git clone git网址 工作区&#xff0c;暂存区&#xff0c;本地仓库…

程序找茬:统计字符个数问题

【题目描述】 下面的程序意图在于统计字符串中字符1的个数&#xff0c;可惜有瑕疵&#xff1a; #include<stdio.h> #define maxn 10000000 10 int main() {char s[maxn];scanf("%s", s);int tot 0;for(int i 0; i < strlen(s); i)if(s[i] 1) tot;prin…

67万英语单词学习词典ACCESS\EXCEL数据库

这似乎是最多记录的英语单词学习词典&#xff0c;包含复数、过去分词等形式的单词。是一个针对想考级的人员辅助背单词学英语必备的数据&#xff0c;具体请自行查阅以下的相关截图。 有了数据才能想方设法做好产品&#xff0c;结合权威的记忆理论&#xff0c;充分调动用户的眼…

智慧公厕解决什么问题?实现了什么样的价值?

公共厕所一直是城市管理的难题&#xff0c;常常面临着卫生条件不佳、管理不善以及使用体验差等问题。为了解决这些困扰城市的难题&#xff0c;智慧公厕应运而生。智慧公厕不仅应用了信息化和数字化技术&#xff0c;还通过全方位的智能化应用&#xff0c;彻底改变了传统公厕的面…

(九)JSP教程——pageContext对象

pageContext对象是由JSP容器创建并初始化的&#xff0c;相当于当前页面的容器&#xff0c;它可以访问当前页面中的所有对象。它的主要作用是为JSP页面包装上下文&#xff0c;并用于管理属于JSP的特殊可见部分中已命名对象的访问。 一般情况下&#xff0c;使用该对象的应用并不多…

AScript纯本地离线文字识别插件

目的 AScript是一款可以模拟鼠标和键盘操作的自动化工具。它可以帮助用户自动完成一些重复的、繁琐的任务&#xff0c;节省大量人工操作的时间。但按键精灵是不包含图色功能&#xff0c;无法识别屏幕上的图像&#xff0c;根据图像的变化自动执行相应的操作。本篇文章主要讲解下…

java对象互换工具类

1:将Object类型转成json字符串 /*** 将对象转为字符串* param obj* return*/public static String toString(Object obj) {if(obj null) {return null;}if ("".equals(obj.toString())) {return null;}if (obj instanceof String) {return obj.toString();}try {Ob…

QT--5

1> 将网络聊天室重新实现一遍 服务器端 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);ser new QTcpServer(this); }Widget::~Widget() {delete ui; }vo…

### 【数据结构】线性表--顺序表(二)

文章目录 1、什么是线性表2、线性表的基本操作3、顺序表3.1、顺序表的定义3.2、顺序表的实现方式&#xff1a;静态分配3.3、顺序表的实现方式&#xff1a;动态分配3.4、顺序表的特点3.5、顺序表的初始化与插入操作3.6、顺序表的删除与查询 1、什么是线性表 ​ 线性表是具有相同…