ubuntu下docker环境使用GPU配置

本文主要讲述整个命令流程,具体讲解请看官网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.mzph.cn/news/164026.shtml

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

相关文章

LeetCode131. Palindrome Partitioning

文章目录 一、题目二、题解 一、题目 Given a string s, partition s such that every substring of the partition is a palindrome . Return all possible palindrome partitioning of s. Example 1: Input: s “aab” Output: [[“a”,“a”,“b”],[“aa”,“b”]] Exa…

工具【1、计算时间差2、获取当天时间前后七天时间3、根据当前数据的位置,在数组中插入数据4、数组中,某个属性相同的数据放在一块,如把某个日期相同的相连一起】

生成UUID /*** 唯一的随机字符串,用来区分每条数据* returns {string}*/ export function getUid() {return xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx.replace(/[xy]/g, (c) > {const r (Math.random() * 16) | 0;const v c x ? r : (r & 0x3) | 0x8;retu…

【图文详解】SiamFC++与图注意力的强强联合:单目标追踪系统

1.研究背景与意义 随着计算机视觉技术的不断发展,单目标追踪(Single Object Tracking, SOT)作为计算机视觉领域的一个重要研究方向,已经在许多实际应用中得到了广泛的应用。单目标追踪系统可以通过分析视频序列中的目标运动&…

服务器流量包扣减规则

服务器买的流量包,一般指的是上行带宽,下行通常是不限的 上行和下行是针对服务器而言的 客户端上传文件给服务器,对服务器而言它是在下载,所以对服务器而言他是用的下行带宽(下行流量) 客户端从服务器下载文件,对服务器而言它是在上传,所以对服务器而言他是用的上行带宽(上行…

大数据量条件SQL查询内存处理方案以及数据过滤算法优化

MySQL是一个广泛使用的关系型数据库管理系统。通过SQL语言进行数据操作和查询,还支持多用户、多线程和分布式操作等功能。 在实际使用中,我们会遇到各种查询条件,如字段名、表名、逻辑运算符、比较运算符、函数等。其中,有些查询…

浅析智慧社区建设趋势及AI大数据监管平台方案设计

一、背景与需求 伴随着社会与经济的发展,人们对生活质量的要求越来越高,与此同时,新兴技术的进步也促进了智慧社区市场的逐步成熟。智慧社区是社区管理的一种新理念,是新形势下城市与社会管理的一种创新模式。 在上海、杭州、深…

在.bashrc文件修改环境变量的做法

作者:朱金灿 来源:clever101的专栏 为什么大多数人学不会人工智能编程?>>> ~/.bashrc文件是linux下保存环境变量的系统文件。原以为使用sed命令修改.bashrc文件,实际上不行,需要使用echo命令。具体示例如下…

02-详细介绍Java8新特性方法引用,构造引用,数组引用

方法/构造/数组引用 方法引用 当要传递给Lambda体的操作已经有实现的方法时就可以使用方法引用,方法引用和构造器引用就是为了简化Lambda表达式 方法引用可以看做是Lambda表达式深层次的表达,方法引用本质还是Lambda表达式所以也是函数式接口的一个实例通过方法的名字来指向…

小红书关键词搜索商品列表API接口(分类ID搜索商品数据接口,商品详情接口)演示案例

通过关键词搜索商品API接口,电商平台可以为消费者提供一个简单、快捷的商品搜索功能。用户只需输入关键词,就可以得到与该关键词相关的商品列表。关键词搜索商品API接口还可以提供给第三方开发者一个便捷的商品搜索服务。开发者可以利用该接口&#xff0…

Mac安装配置typescript及在VSCode上运行ts

一、Mac上安装typescript sudo npm install -g typescript 测试一下:出现Version则证明安装成功 tsc -v 二、在VSCode上运行 新建一个xxx.ts文件,测试能否运行 console.log("helloworld") 运行报错:ts-node: command not…

后渗透持久性-– 服务控制管理器

执行以下命令将快速检索服务控制管理器实用程序的 SDDL 权限。 sc sdshow scmanager服务控制管理器 – 安全描述符 PowerShell 还可用于枚举所有用户组的 SDDL 权限并将其转换为可读格式。 $SD Get-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\Services\Schedule\S…

shell 条件语句 if case

目录 测试 test测试文件的表达式 是否成立 格式 选项 比较整数数值 格式 选项 字符串比较 常用的测试操作符 格式 逻辑测试 格式 且 (全真才为真) 或 (一真即为真) 常见条件 双中括号 [[ expression ]] 用法 &…

美国服务器在大陆连不上怎么回事?

​  在租用任何美国服务器之前,都需要先搞清楚一些使用问题,毕竟服务器能够不间断地访问也是站在们所期望的。但有时,美国服务器网站或许也会突然出现在大陆打不开的情况,在面临这种情况时,我们应该怎么做? 查看连不…

【史上最细教程】服务器MySQL数据库完成主从复制

文章目录 MySQL完成主从复制教程准备:原理:步骤: 推荐文章 MySQL完成主从复制教程 主从复制(也称 AB 复制)就是将一个服务器(主服务器)的数据复制到一个或多个MySQL数据库服务器(从…

Java飞翔的鸟

创建三个包,存放代码。把图片放进文件中 APP包(运行) GameApp类 package APP; import mian.GameFrame;public class GameApp {public static void main(String[] args) {new GameFrame();} } mian包(主内容) Barri…

python获取json所有节点和子节点

使用python获取json的所有父结点和子节点 并使用父节点加下划线命名子节点 先展示一段json代码 {"level1": {"level2": {"level3": [{"level4": "4value"},{"level4_2": "4_2value"}]},"level2_…

电力行业的智能调度:数字孪生技术

随着科技的发展,数字孪生技术正逐渐渗透到各个行业领域,其中包括电力行业。数字孪生技术为电力行业带来了前所未有的机遇,使得电力系统的运行更加高效、安全和可持续。本文借用山海鲸可视化软件几个电力行业数字孪生案例探讨数字孪生技术在电…

介绍几种Go语言开发的IDE

文章目录 1.前言2.几种ide2.1 Goland2.2 VsCode示例 2.3 LiteIDE2.4 Eclipse插件GoClipse2.5 Atom2.6 Vim2.7 Sublime Text 3.总结写在最后 1.前言 Go语言作为一种新兴的编程语言,近年来受到了越来越多的关注。 它以其简洁、高效和并发性能而闻名,被广…

Jmeter 压测保姆级入门教程

1、Jmeter本地安装 1.1、下载安装 软件下载地址: https://mirrors.tuna.tsinghua.edu.cn/apache/jmeter/binaries/ 选择一个压缩包下载即可 然后解压缩后进入bin目录直接执行命令jmeter即可启动 1.2 修改语言 默认是英文的,修改中文,点击…

关于解决C# WinForm中Chart控件增删数据时报错的解决方法

1.报错代码 System.InvalidOperationExceptionHResult=0x80131509Message=集合已修改;可能无法执行枚举操作。具体报错表现为,在Application.Run(Form1())中断。 2.解决方法 这个错误通常是由于在枚举集合时对集合进行了修改而引起的。在修改完chart控件中的内容后,可能会…