当前位置: 首页 > news >正文

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 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  \镜像名  \rqt

那个 -v 就是挂共享目录的,冒号:左边是本机目录,右边是容器里面的目录,会根据路径新创建一个文件夹的

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

http://www.lryc.cn/news/239027.html

相关文章:

  • 渗透工具---BurpSuite 插件开发之HelloWorld
  • 2216. 美化数组的最少删除数
  • 竞赛 题目:基于深度学习的人脸表情识别 - 卷积神经网络 竞赛项目 代码
  • 基于安卓android微信小程序的好物分享系统
  • 【Spring Boot】使用WebSocket协议完成来单提醒及客户催单功能
  • 如何有效的禁止Google Chrome自动更新?
  • OpenShift 4 - 部署 RHODS 环境,运行 AI/ML 应用(视频)
  • MySQL 的执行原理(二)
  • postgres in (?,?) 和 =any(?) 用法/性能对比
  • 46. Qt Android调用Java代码进行辅助开发 -- 框架搭建
  • NX二次开发UF_CAM_PREF_set_logical_value 函数介绍
  • docker下移除不使用的镜像、容器、卷、网络
  • C语言基本算法之选择排序
  • 服务器数据恢复—raid5上层NTFS分区误删除/格式化的数据恢复案例
  • 【漏洞复现】IP-guard WebServer 存在远程命令执行漏洞
  • 人工智能学习阶段有哪些?
  • vue 中为什么需要虚拟DOM、VDOM 是如何生成的、VDOM 如何做 diff 的?
  • 数据分析思维与模型:相关分析法
  • 【算法萌新闯力扣】:两句话中的不常见单词
  • Xilinx Zynq-7000系列FPGA任意尺寸图像缩放,提供两套工程源码和技术支持
  • 基于 Glibc 版本升级的 DolphinDB 数据查询性能优化实践
  • 【顺序表的应用-通讯录的实现】
  • [Spring Cloud] Nacos 实战 + Aws云服务器
  • SpringCloud微服务注册中心:Nacos介绍,微服务注册,Ribbon通信,Ribbon负载均衡,Nacos配置管理详细介绍
  • 身份证号码校验
  • ArcGIS如何处理并加载Excel中坐标数据?
  • C++标准模板(STL)- 类型支持 (类型修改,从给定类型移除 const 或/与 volatile 限定符,std::remove_cv)
  • nodejs搭建本地服务
  • 如何看待Unity新收费模式?
  • Excel数据可视化—波士顿矩阵图【四象限图】