ubuntu下docker环境使用GPU配置

news2024/9/23 11:19:41

本文主要讲述整个命令流程,具体讲解请看官网nvidia-容器工具包和一篇总结得很详细的博文docker使用GPU总结

docker的版本必须安装19.0版本以上的,这里也只讲19.0版本以上的使用方法

首先设置一下网络信息

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 \
  && \
    sudo apt-get update

然后开始安装

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

然后配置一下文件,这样容器才能使用runtime

sudo nvidia-ctk runtime configure --runtime=docker

重启一下容器

sudo systemctl restart docker

运行该命令验证是否安装成功

sudo docker run --rm --runtime=nvidia --gpus all ubuntu nvidia-smi

出现这个就是安装成功了
在这里插入图片描述
然后按照以下格式创建容器

docker run -itd --gpus all --name 容器名 镜像名

示例

docker run -itd --gpus all --name cuda-test ubuntu

然后启动容器

docker start cuda-test

进入容器

docker exec -it cuda-test /bin/bash

在容器里面运行一下再验证一下,能正常显示上面那个图案就是能成功调用了,注意那个cuda版本要能显示,要是现实 N/A的话是不行的

nvidia-smi

cuda版本显示N/A的话用以下格式创建容器

docker run -itd --gpus all --name 容器名 -e NVIDIA_DRIVER_CAPABILITIES=compute,utility -e NVIDIA_VISIBLE_DEVICES=all 镜像名

由于我要运行slam,并且需要pangolin进行显示,所以这涉及到主机交互
所以我的命令如下
建议安装和我一样的镜像

docker pull osrf/ros:noetic-desktop-full

这样才能和主机进行UI界面交互

docker run -itd  \
	--gpus all  \
	--name 自命名容器名 \
    --env="DISPLAY" \
    --env="QT_X11_NO_MITSHM=1" \
    --volume="/tmp/.X11-unix:/tmp/.X11-unix:rw" \
    -v /media/rice/文件/2_my_work_zys/zys_work/cuda-container/:/root/files  \
    -v /usr/local/cuda-11.3:/usr/local/cuda-11.3  \
    osrf/ros:noetic-desktop-full  \
    rqt

那个 -v 就是挂共享目录的,冒号:左边是本机目录,右边是容器里面的目录,会根据路径新创建一个文件夹的,两个 -v 自行选择,记得换成自己电脑的路径

因为我里面C++要用到CUDA,所以也要链接主机CUDA的目录

链接完cuda后在容器里面还要设置路径,不然系统会找不到cuda
进入bashrc

vim ~/.bashrc

然后把下面这段复制进去,记得把cuda改成自己的版本名字,我的是cuda-11.3

export LD_LIBRARY_PATH=/usr/local/cuda/lib64:/usr/local/cuda/extras/CPUTI/lib64
export CUDA_HOME=/usr/local/cuda/bin
export PATH=$PATH:$LD_LIBRARY_PATH:$CUDA_HOME

上面命令运行后100%会报错的,然后接下来看我的另一篇文章来解决就可以了,看后半部分docker容器中安装ROS1/ROS2(不用配任何环境,10分钟搞定)
我的镜像名是 osrf/ros:noetic-desktop-full 不然会不成功,因为我要用ros,并且只有ros里面有rqt,所以还需要安装一下这个osrf/ros:noetic-desktop-full镜像
这样安装即可

docker pull osrf/ros:noetic-desktop-full

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

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

相关文章

批量插入SQL 错误 [933] [42000]: ORA-00933: SQL 命令未正确结束

使用DBeaver向【oracle数据库】插入大量数据 INSERT INTO Student(name,sex,age,address,birthday) VALUES(Nike,男,18,北京,2000-01-01) ,(Nike,男,18,北京,2000-01-01) ,(Nike,女,18,北京,2000-01-01) ,(Nike,女,18,北京,2000-01-01) ,(Nike,男,18,北京,2000-01-01) ,(Nike…

Visio学习笔记

1. 常用素材 1.1 立方体:张量, tensor 操作路径:更多形状 ⇒ 常规 ⇒ 基本形状 自动配色 在选择【填充】后Visio会自动进行配色;

我劝烂了,这东西大学生早用早解脱

大学生看我,这个东西太太太香了啊!!! 要写论文,写总结的都给我用起来 这东西能自动写文章,想写几篇就写几篇,篇篇不重复!只要输入一个标题,马上就能生成一篇。真的贼香…

2023-11-23 LeetCode每日一题(HTML 实体解析器)

2023-11-23每日一题 一、题目编号 1410. HTML 实体解析器二、题目链接 点击跳转到题目位置 三、题目描述 「HTML 实体解析器」 是一种特殊的解析器,它将 HTML 代码作为输入,并用字符本身替换掉所有这些特殊的字符实体。 HTML 里这些特殊字符和它们…

视频去水印软件有哪些?分享四款好用去水印软件

对于从事自媒体的朋友们来说,保护自己的视频作品免受盗用至关重要。为了标识归属,我们通常会在视频上添加水印。然而,当我们在寻找素材并打算进行剪辑时,发现素材上的水印会严重干扰使用。在这种情况下,我们需要采取一…

【Linux】who命令使用

who who命令用于显示系统中有哪些使用者正在上面,显示的资料包含了使用者 ID、使用的终端机、从哪边连上来的、上线时间、呆滞时间、CPU 使用量、动作等等。 著者 由Joseph Arceneaux、David MacKenzie和Michael Stone撰写。 语法 who [选项] [文件|参数] who命…

第19章JAVA绘图

19.1JAVA绘图类 绘图是高级程序设计中非常重要的技术 19.1.1Graphics类 Graphics类是所有图形上下文的抽象基类,它允许应用程序在组件以及闭屏图片上进行绘制 Graphics类封装了JAVA支持的基本绘图操作所需的状态信息,主要包括颜色,字体&…

Doris-集群部署(四)

创建目录并拷贝编译后的文件 1)创建目录并拷贝编译后的文件 mkdir /opt/module/apache-doris-0.15.0 cp -r /opt/software/apache-doris-0.15.0-incubating-src/output /opt/module/apache-doris-0.15.02)修改可打开文件数(每个节点&#x…

jenkins 参数构建

应用保存 [rootjenkins-node1 .ssh]# ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved i…

yolov3学习总结

目标检测算法 单阶段:不提取出候选框,直接将整个图像输入模型中,算法直接输出检测结果,端到端 yolo,ssd 端到端,输入图像到网络中,然后从网络中输出图像 二阶段:先从图像中提取出…

探讨工业元宇宙和数字孪生的关系

就在各类技术专家还在试图设想元宇宙虚拟世界将为企业和消费者带来什么时,工业元宇宙虚拟世界已经在改变人们设计、制造以及与各行业物理实体互动的方式。尽管元宇宙的定义比比皆是,工业元宇宙将如何发展还有待观察,但数字孪生越来越多地被视…

面试cast:reinterpret_cast/const_cast/static_cast/dynamic_cast

目录 1. cast 2. reinterpret_cast 3. const_cast 3.1 加上const的情况 3.2 去掉const的情况 4. static_cast 4.1 基本类型之间的转换 4.2 void指针转换为任意基本类型的指针 4.3 子类和父类之间的转换 5. dynamic_cast 5.1 RTTI(Run-time Type Identification) 1.…

SQLY优化

insert优化 1.批量插入 手动事务提交 主键顺序插入,主键顺序插入性能高于乱序插入 2.大批量插入数据 如果一次性需要插入大批量数据,使用Insert语句插入性能较低,此时可以使用MYSQL数据库提供的load指令进行插入 主键优化 主键设计原则 …

计算机基础知识57

前后端数据传输的编码格式(contentType) # 我们只研究post请求方式的编码格式: get请求方式没有编码格式-- index?useranme&password get请求方式没有请求体,参数直接在url地址的后面拼接着 # 有哪些方式可以提交post请求:f…

SAP GOS与DMS简介

通常在项目实施过程中很多业务数据需要管理对应的系统外的附件, 制造业的BOM需要对应图纸,采购订单需要对应线下的采购合同,物料需要对应相应的参数文件等等,很多产品都会遇到业务数据和系统外相关资料的关联,有PDF的文…

2002-2020年341个地级市农业保险收入数据

2002-2020年341个地级市农业保险收入数据 1、时间:2002-2020年 2、范围:341个地级市 3、指标:农业保险收入 4、来源:整理自wind、保险年鉴 5、指标解释: 农业保险保费收入是指保险公司从农户或农业生产经营者那里…

聊一聊Linux动态链接和GOT、PLT

共享动态库是现代系统的一个重要组成部分,大家肯定都不陌生,但是通常对背后的一些细节上的实现机制了解得不够深入。当然,网上有很多关于这方面的文章。希望这篇文章能够以一种与其他文章不同的角度呈现,可以对你产生一点启发。 …

@Scheduled注解 定时任务讲解

用于在Java Spring框架中定时执行特定任务的注解 Scheduled,它能够指定方法在特定时间间隔或特定时间点执行。默认参数是cron,cron参数被用来定义一个Cron表达式,它代表了任务执行的时间规则 参数如下 Cron 这是是一种时间表达式&#xff…

Python版本切换的解决方法,升级Python 2.7 到 Python 3.7

之前解决问题的时候,记录的一个Python版本切换的解决方法,今天在解决其他问题的时候,查看了下之前写的这个解决方法。还是很适用的。然后加入了下linux系统中python配置修改的问题。 Mac 升级Python 2.7 到 Python 3.7 1、python3.7官网下载…

【SpringBoot】 This application has no explicit mapping for 解决方法

This application has no explicit mapping for 解决方法 This application has no explicit mapping for 解决方法一、背景二、原因三、解决方案方式一:方式二: 四、解决 This application has no explicit mapping for 解决方法 一、背景 在SpringBo…