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.pswp.cn/news/164026.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/164026.shtml
英文地址,請注明出處:http://en.pswp.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控件中的內容后,可能會…