Windows11下Docker使用记录(五)

news2024/11/13 11:32:26

目录

    • 准备
    • 1. WSL安装cuda container toolkit
    • 2. win11 Docker Desktop 设置
    • 3. WSL创建docker container并连接cuda
    • 4. container安装miniconda(可选)

Docker容器可以从底层虚拟化,使我们能够在 不降级 CUDA驱动程序的情况下使用 任何版本的CUDA Toolkit,非常方便。
当然,Docker容器并不会提供真正的硬件虚拟化,而是通过隔离喝共享宿主机的操作系统内核来实现虚拟化。

准备

名称版本
win11
wsl2Ubuntu-22.04(以下简称WSL)
(Host) Driver Version537.58(不建议更高版本)

1. WSL安装cuda container toolkit

需要docker深度学习的这个必装,因为我们后续是从wsl中创建docker container。
安装说明链接:https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html
我是按以下安装的:

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
sed -i -e '/experimental/ s/^#//g' /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit
sudo nvidia-ctk runtime configure --runtime=docker
systemctl --user restart docker

2. win11 Docker Desktop 设置

Docker Desktop setting里设置如下,这样wsl中的docker image 和 container 也都可以在Docker Desktop这里看到。
在这里插入图片描述

3. WSL创建docker container并连接cuda

在docker中使用nvidia gpu需要使用nvidia/cuda发布的images,看tag可以选cuda-toolkit版本。我选的是11.6的,这里需要注意的是runtime版本虽然小,但是cuda-toolkit不完整,所以最后我选的是11.6.1-cudnn8-devel-ubuntu20.04在这里插入图片描述
在wsl里运行:

docker pull nvidia/cuda:11.6.1-cudnn8-devel-ubuntu20.04
# 为了保证可视化 run image 时加以下参数
docker run -it --gpus all  -e NVIDIA_DRIVER_CAPABILITIES=compute,utility -e NVIDIA_VISIBLE_DEVICES=all --name 自定义 --env="DISPLAY" --env="QT_X11_NO_MITSHM=1" --volume="/tmp/.X11-unix:/tmp/.X11-unix:rw" --device=/dev/dri:/dev/dri -p 自定义:自定义 nvidia/cuda:11.6.1-cudnn8-devel-ubuntu20.04 bash

安装VcXsrv可以可视化,可视化的部分请看这篇。
这时候已经有/cuda了。

(robodiff) root@108c7c90b1f5:/usr/local# ls
bin  cuda  cuda-11  cuda-11.6  etc  games  include  lib  man  sbin  share  src

但这时候 nvcc -V应该是不可以的,需要先给/cuda/cuda-11.6建立链接,然后在~/.bashrc里添加以下,记得source ~/.bashrc

# 给`/cuda`和`/cuda-11.6`建立链接
ln -sf /usr/local/cuda-11.6 /usr/local/cuda
export CUDA_HOME=/usr/local/cuda
export PATH=${PATH}:${CUDA_HOME}/bin
export LD_LIBRARY_PATH=${CUDA_HOME}/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

这时候nvcc -V可以,是我想要的v11.6如下图。
在这里插入图片描述

我们也可以用cuda-samples进一步验证。(此步可略)

cd /usr/local/cuda/
git clone https://github.com/NVIDIA/cuda-samples.git
cd cuda-samples
git checkout tags/v11.6 #选择指定tag的版本
cd Samples/1_Utilities/deviceQuery
make #这时候会生成名为 deviceQuery 的可执行文件
./deviceQuery #运行它会显示cuda相关的所有信息

最后一行显示了 Result = PASS 就说明我们cuda安装成功并且可以运行了。
此时,装的pytorch就可以使用GPU了。
在这里插入图片描述

4. container安装miniconda(可选)

container中可以安装 minicoda,各个版本的链接在这:https://repo.anaconda.com/miniconda/。选个自己需要的版本安装,我的版本是Miniconda3-py39_24.1.2-0-Linux-x86_64.sh

mkdir -p /opt/conda
wget https://repo.anaconda.com/miniconda/Miniconda3-py39_24.1.2-0-Linux-x86_64.sh -O /opt/conda/miniconda.sh \ && bash /opt/conda/miniconda.sh -b -p /opt/miniconda 
chmod +x /opt/conda/miniconda.sh
. /opt/miniconda/bin/activate

这时候会打开conda并创建base环境,说明我们安装成功。为了不每次打开conda都要运行. /opt/miniconda/bin/activate,我把它写在~/.bashrc里,然后source ~/.bashrc,这样打开的所有terminal都可以使用conda。
在这里插入图片描述

开始我们的深度学习吧 ~

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

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

相关文章

【李宏毅-生成式 AI】Spring 2024, HW5:LLM Fine-tuning 实验记录

文章目录 1. Task Overview2. Overall Workflow3. Dataset 介绍4. 代码介绍4.1 环境介绍4.2 下载 dataset4.3 下载并加载模型4.2 Notebook 代码1)import 部分2)固定 seed3)加载 LLM4)加载 tokenizer5)设置解码参数6&am…

C++期末复习提纲(血小板)

目录 1.this指针 2.静态成员变量 3.面向对象程序设计第一阶段 4.面向对象程序设计第二阶段 5.面向对象程序设计第三阶段 6.简答题 (1)拷贝构造函数执行的三种情况: (2)虚析构函数的作用: &#xff…

Java面试_数据库篇_优化,事务,Mysql

Java面试_数据库篇_优化,事务,Mysql 优化如何定位慢查询方案一: 开源工具方案二: Mysql自带慢日志 如何分析慢SQL语句索引介绍索引聚簇索引和非聚簇索引,回表查询覆盖索引,超大分页优化索引创建的原则索引失效 谈谈sql优化的经验 事务事务特性隔离级别un…

算法:位运算题目练习

目录 常见的位运算的操作总结 ①基础位操作 ②给一个数n,确定它的二进制表示中的第x位是0还是1 ③将一个数n的二进制表示的第x位修改成1 ④将一个数n的二进制表示的第x位修改成0 ⑤位图的思想 ⑥提取一个数n二进制表示中最右侧的1 ⑦干掉一个数n二进制表示中…

无人机、机器人10公里WiFi远距离图传模块,实时高清视频传输,飞睿CV5200模组方案,支持mesh自组网模块

在快速发展的物联网时代,远距离无线通信技术已成为连接各种智能设备的关键。无人机、安防监控、机器人等领域对数据传输的距离和速度要求越来越高。 公里级远距离WiFi模组方案可以通过多种技术和策略的结合来实现无人机和机器人之间的高效通信传输。 飞睿智能CV52…

QT C++ QTableWidget 表格合并 setSpan 简单例子

这里说的合并指的是单元格,不是表头。span的意思是跨度、宽度、范围。 setSpan函数需要设定行、列、行跨几格,列跨几格。 //函数原型如下 void QTableView::setSpan(int row, i nt column, 、 int rowSpanCount,/*行跨过的格数*/ int columnSpanCount…

离散数学答疑 5

知识点:单侧连通,强连通,弱连通 前缀码:比如001和00101就不是。因为后者的前三位和前者的重复了 有向图的邻接矩阵求法:横着看 数据结构21-4分钟搞定邻接矩阵_哔哩哔哩_bilibili 可达矩阵是包含自反性的。可达矩阵是…

Excel 将同一分类下的值依次填进分类格右边的格中

表格的第2列是分类,第3列是明细: ABC1S.noAccountProduct21AAAQatAAG32BAAQbIAAW43BAAQkJAAW54CAAQaAAP65DAAQaAAX76DAAQbAAX87DAAQcAAX 需要将同一分类下的值依次填入分类格右边的格中: ABCD1S.noAccountProduct21AAAQatAAG32BAAQbIAAWkJ…

13 RTP包的使用

RTP RTP包最主要的就是Sequence number。 对于发送者来说,视频的每一个帧都有很多包组成。对于接收端来接收的时候是有一个队列进行接收的。这个队列大小都是通过计算的。有了队列之后就会不断的往队列中插入数据。当队列中有的数据超时一直组不成包的时候&#xf…

国资e学快速学习实战教程

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

[FreeRTOS 基础知识] 任务调度 与 链表

文章目录 任务并行的概念RTOS如何实现多任务调度? 任务并行的概念 在生活中,经常出现一心多用的情况。比如你需要一边吃饭一边手机回复信息,这里面就存在两个任务:任务一、吃饭。任务二、手机回复信息。 假如你无法一心多用&…

IO进程线程(十二)进程间通信 共享内存 信号灯集

文章目录 一、共享内存 shared memory(shm)(一)特点(二) 相关API1. 创建共享内存2. 映射共享内存到当前的进程空间3. 取消地址映射4. 共享内存控制 (三)使用示例(四&…

08-指针与数组的结合——数组指针与指针数组的区别

指针与数组的结合 示例 1:指针访问数组元素 通过指针访问数组元素的例子&#xff1a; #include <stdio.h>int main() {int arr[5] {1,2,3,4,5};//int *p1 &arr;int *p1 (int *)&arr; // 需要强制类型转换int *p2 arr;printf("*p1:%d\n", *(p1 …

【SQL】牛客网SQL非技术入门40道代码|练习记录

跟着刷题&#xff1a;是橘长不是局长哦_哔哩哔哩_bilibili 6查询学校是北大的学生信息 select device_id, university from user_profile where university 北京大学 7查找年龄大于24岁的用户信息 select device_id, gender, age, university from user_profile where age…

大模型训练的艺术:从预训练到增强学习的四阶段之旅

文章目录 大模型训练的艺术&#xff1a;从预训练到增强学习的四阶段之旅1. 预训练阶段&#xff08;Pretraining&#xff09;2. 监督微调阶段&#xff08;Supervised Finetuning, SFT&#xff09;3. 奖励模型训练阶段&#xff08;Reward Modeling&#xff09;4. 增强学习微调阶段…

关于 Redis 中集群

哨兵机制中总结到&#xff0c;它并不能解决存储容量不够的问题&#xff0c;但是集群能。 广义的集群&#xff1a;只要有多个机器&#xff0c;构成了分布式系统&#xff0c;都可以称之为一个“集群”&#xff0c;例如主从结构中的哨兵模式。 狭义的集群&#xff1a;redis 提供的…

C++~~期末复习题目讲解---lijiajia版本

目录 1.类和对象 &#xff08;3&#xff09;创建对象的个数 &#xff08;3&#xff09;全局变量&#xff0c;局部变量 &#xff08;4&#xff09;构造函数的执行次数 &#xff08;5&#xff09;静态动态析构和构造顺序 &#xff08;6&#xff09;初始化顺序和声明顺序 &a…

Postman环境变量以及设置token全局变量!

前言百度百科解释&#xff1a; 环境变量&#xff08;environment variables&#xff09;一般是指在操作系统中用来指定操作系统运行环境的一些参数&#xff0c;如&#xff1a;临时文件夹位置和系统文件夹位置等。 环境变量是在操作系统中一个具有特定名字的对象&#xff0c;它…

【微服务】springcloud-alibaba 配置多环境管理使用详解

目录 一、前言 二、配置多环境问题概述 2.1 什么是微服务多环境配置管理 2.1.1 微服务多环境配置管理问题起源 2.2 为什么要做多环境配置管理 2.3 微服务多环境配置管理解决方案 三、springboot 配置多环境管理解决方案 3.1 前置准备 3.1.1 搭建一个springboot工程 3.…

第五十六周:文献阅读

目录 摘要 Abstract 文献阅读&#xff1a;应用于地表水总磷浓度预测的可解释CEEMDAN-FE-LSTM-Transformer混合模型 一、现有问题 二、提出方法 三、方法论 1、CEEMDAN&#xff08;带自适应噪声的完全包络经验模式分解&#xff09; 2、FE&#xff08;模糊熵 &#xff09…