0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

使用Docker容器的入門技巧

NVIDIA英偉達企業(yè)解決方案 ? 來源:NVIDIA英偉達企業(yè)解決方案 ? 作者:NVIDIA英偉達企業(yè)解 ? 2022-07-27 09:43 ? 次閱讀

上一篇內容為大家介紹了從 NVIDIA NGC 下載 DeepStream 6.1 的容器版鏡像到本地在 Jetson 上設備的基礎指令,不過在正式使用容器版 DeepStream6.1 之前,我們還是需要為入門用戶提供基本的使用方式與一些小技巧。

Jetson Orin 開發(fā)套件內置 64GB EMMC 存儲,并且很容易擴充 64G 甚至更大的 NVME 存儲設備,可以有非常充沛的空間,在這種情況下就非常推薦使用 Docker 容器技術,能有效簡化應用軟件的安裝與調試工作,非常適合用來開發(fā)與部署較為復雜的多功能智能應用,并且在 NVIDIA NGC 上提供了非常豐富的 Docker 版本應用鏡像文件,用戶只要一條指令便可輕松下載使用,這是邊緣計算非常重要的一項應用技術。

Docker 是一種比較新的 “容器” 技術,是 NVIDIA 近年來非常大力推廣的應用重點,越來越多的 GPU 開發(fā)環(huán)境都以 Docker 鏡像(或稱為 “倉” )形式提供,具備以下的優(yōu)點與特性:

1、輕量級:這是相較于虛擬機的比對,容器內不需要獨立操作系統(tǒng),它是基于主機上的操作系統(tǒng),透過一些映射指令去指向資源路徑。大部分的容器鏡像都在數十 MB 到數 GB 大小規(guī)模。

2、硬件調度能力:這是 NVIDIA 非常喜歡 Docker 容器技術的重點之一,虛擬機環(huán)境對 GPU 支持能力并不好,得透過底層穿透(pass through)方式調用,但容易影響系統(tǒng)穩(wěn)定性。Docker 容器直接與操作系統(tǒng)交互運作,只要主機上操作系統(tǒng)裝好 NVIDIA GPU 的驅動,甚至不需要安裝 CUDA 開發(fā)包,在 Docker 容器內就能輕松用上 GPU 并行計算的功能。

3、封裝完整:相較于 conda 或 virtualenv 這類環(huán)境虛擬技術而言,Docker 容器的封裝更為完整而且獨立,這在開發(fā) Python 相關應用時更加明顯,因為 Python 版本升級太頻繁,相關依賴包之間的版本牽動關系復雜,而 Docker 容器的封裝就顯得非常有效,并且移植十分簡便。

Docker 作為一個開源的應用容器引擎,允許開發(fā)者很方便地打包應用程序和依賴庫到可移植的容器中,然后發(fā)布到任何流行的 Linux 設備上,Docker 完全使用沙箱機制,容器之間相互獨立,不存在任何接口,因此,允許開發(fā)者在同一臺機器上,運行不同環(huán)境的應用程序與服務,大大簡化應用程序(或者服務)的運維操作,同時也提高了開發(fā)與測試效率。

對于 CUDA 設備的調用,需要 NVIDIA 自行開發(fā)的 nvidia-docker2 指令轉換插件的協(xié)助,在 x86 設備上都需要自行安裝 Docker 管理機制與 nvidia-docker2 界面,不過 JetPack 都為 Jetson 安裝好了這兩個元件,我們只要使用就可以。

現在就開始教大家如何使用 Docker 容器,以及從 NVIDIA NGC 中心下載可以在 Jetson 設備上使用的鏡像。

1、檢查 Docker 環(huán)境與修改儲存路徑:

用 JetPack 安裝好系統(tǒng)之后,直接輸入以下指令,就能檢查目前系統(tǒng)中 Docker 的所有狀態(tài)信息

sudo  docker  info

可以看到一長串關于 Docker 環(huán)境的內容,由于信息量較大就不在這里單獨列出所有內容。如果要單純查看版本號,只要執(zhí)行以下指令就可以:

sudo  docker  version

現在會看到如下版本信息,包括用戶(Client)端與服務(Server)端:

cd5e4032-0ce3-11ed-ba43-dac502259ad0.png

如果要看最簡單的版本信息,那么下面指令是最適合的:

sudo  docker  --version

要檢查目前 Docker 系統(tǒng)放置鏡像文件的路徑,可以執(zhí)行以下指令:

sudo  docker  info  |  grep  -i  root

系統(tǒng)預設的存放路徑為 /var/lib/docker,如果有自己添加的額外 NVME 存儲設備,可以在 /etc/docker/daemon.json 文件中添加以下指令,調整存放路徑:

# 文件 /etc/docker/daemon.json{"data-root": "<自己指定路徑>",    "runtimes": {        "nvidia": {            "path": "nvidia-container-runtime",            "runtimeArgs": []        }    }}

修改完后執(zhí)行以下指令,讓新的設定值生效:

sudo  systemctl  daemon-reloadsudosystemctlrestartdocker.service

現在可以檢查看看存儲的路徑是否更新。

2、簡化 Docker 指令:

這個應用完全依賴指令操作,在 Ubuntu 操作系統(tǒng)時又需要 “sudo” 取得操作權限,例如執(zhí)行 “docker info” 指令,會出現下面信息,表示權限不足。

cd98575e-0ce3-11ed-ba43-dac502259ad0.png

我們可以執(zhí)行以下步驟,在執(zhí)行 Docker 指令時可以不需要使用 “sudo”:

sudo  groupadd  dockersudo  gpasswd  -a  ${USER}  dockersudo  service  docker  restartnewgrp-docker

當然,這只是簡化權限的問題,僅提供一個參考。

3、從 NGC 尋找合適的鏡像文件:

訪問http://ngc.nvidia.com/會出現如下畫面,在左上方 “搜索欄(漏斗圖標)” 中輸入“l(fā)4t”關鍵字,就會列出能在 Jetson 上運行的鏡像列表。

cdb8c9a8-0ce3-11ed-ba43-dac502259ad0.png

目前已經提供近 20 個容器鏡像,分為以下 6 大類別:

(1)基礎類:

  • NVIDIA L4T Base:

https://catalog.ngc.nvidia.com/orgs/nvidia/containers/l4t-base

  • NVIDIA L4T CUDA:

https://catalog.ngc.nvidia.com/orgs/nvidia/containers/l4t-cuda

  • NVIDIA Container Toolkit:

https://catalog.ngc.nvidia.com/orgs/nvidia/teams/k8s/containers/container-toolkit

(2)深度學習類:

  • NVIDIA L4T ML:深度學習綜合開發(fā)環(huán)境

https://catalog.ngc.nvidia.com/orgs/nvidia/containers/l4t-ml

  • NVIDIA L4T PyTorch:

https://catalog.ngc.nvidia.com/orgs/nvidia/containers/l4t-pytorch

https://catalog.ngc.nvidia.com/orgs/nvidia/containers/l4t-tensorflow

  • NVIDIA L4T TensorRT:

https://catalog.ngc.nvidia.com/orgs/nvidia/containers/l4t-tensorrt

(3)視覺類:

  • DeepStream-l4t

https://catalog.ngc.nvidia.com/orgs/nvidia/containers/deepstream-l4t

  • DeepStream L4T - Intelligent Video Analytics Demo

https://catalog.ngc.nvidia.com/orgs/nvidia/helm-charts/video-analytics-demo-l4t

  • DeepStream People Detection Demo on Jetson

https://catalog.ngc.nvidia.com/orgs/nvidia/containers/deepstream-peopledetection

  • Gaze Demo for Jetson/L4T

https://catalog.ngc.nvidia.com/orgs/nvidia/containers/jetson-gaze

  • Pose Demo for Jetson/L4T

https://catalog.ngc.nvidia.com/orgs/nvidia/containers/jetson-pose

(4)對話類:

  • Voice Demo for Jetson/L4T

https://catalog.ngc.nvidia.com/orgs/nvidia/containers/jetson-voice

  • Riva Speech Skills

https://catalog.ngc.nvidia.com/orgs/nvidia/teams/riva/containers/riva-speech

(5)教學類:

  • DLI Getting Started with AI on Jetson Nano

https://catalog.ngc.nvidia.com/orgs/nvidia/teams/dli/containers/dli-nano-ai

  • DLI Building Video AI Applications at the Edge on Jetson Nano

https://catalog.ngc.nvidia.com/orgs/nvidia/teams/dli/containers/dli-nano-deepstream

(6)醫(yī)療類:專屬于 Clara AGX 的應用容器鏡像。

4、下載 NVIDIA L4T ML 鏡像并創(chuàng)建容器

這是能在 Jetson 設備上執(zhí)行的最完整的機器學習(MachineLearning)軟件棧鏡像,訪問 https://catalog.ngc.nvidia.com/orgs/nvidia/containers/l4t-ml 之后就能看到容器內所包含的內容,以 l4t-ml:r32.6.1-py3 版本為例,其打包的工具與功能庫如下:

  • TensorFlow 1.15.5

  • PyTorch v1.9.0

  • torchvision v0.10.0

  • torchaudio v0.9.0

  • onnx 1.8.0

  • CuPy 9.2.0

  • numpy 1.19.5

  • numba 0.53.1

  • OpenCV 4.5.0 (with CUDA)

  • pandas 1.1.5

  • scipy 1.5.4

  • scikit-learn 0.23.2

  • JupyterLab 2.2.9

這已經涵蓋我們所需要的絕大部分內容,只要下載鏡像后生成執(zhí)行的容器,就能直接使用里面的開發(fā)環(huán)境,這樣能節(jié)省非常大量的安裝與調試的時間。

點擊頁面右上角 “Pull Tag” 按鈕,會列出目前可下載版本的鏡像文件,最好選擇配合目前 JetPack 版本的鏡像,例如用 JetPack5.0 DP 安裝的 Jetson Orin 開發(fā)套件,其 L4T 版本為 34.1.1,就用下面指令下載 r34.1.1-py3 鏡像:

docker  pull  nvcr.io/nvidia/l4t-ml:r34.1.1-py3

下載完成之后可以用以下指令檢查:

docker  images

如果出現以下信息,則表示下載完成。

REPOSITORY        TAG           IMAGE ID       CREATED      SIZEnvcr.io/nvidia/l4t-mlr34.1.1-py393c715e8751b6weeksago16.2GB

這個方法可以用在任何 L4T 版本鏡像文件上。

下一篇文章我們將進一步帶著大家用這個鏡像文件去創(chuàng)建容器,并且開始執(zhí)行演示或開發(fā)的內容。

審核編輯:湯梓紅


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • NVIDIA
    +關注

    關注

    14

    文章

    4986

    瀏覽量

    103066
  • 容器
    +關注

    關注

    0

    文章

    495

    瀏覽量

    22062
  • Docker
    +關注

    關注

    0

    文章

    458

    瀏覽量

    11857

原文標題:NVIDIA Jetson 系列文章(5):使用Docker容器的入門技巧

文章出處:【微信號:NVIDIA-Enterprise,微信公眾號:NVIDIA英偉達企業(yè)解決方案】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    如何使用 Docker容器化技術

    對于開發(fā)人員來說,Docker肯定都不陌生,今天小編帶大家重新學習一下Docker。 什么是 Docker 官話: Docker 是一種開源的容器
    的頭像 發(fā)表于 09-30 11:24 ?1.6w次閱讀

    ARM平臺實現Docker容器技術

    本帖最后由 Tronlong創(chuàng)龍科技 于 2024-7-19 16:50 編輯 什么是Docker? (1)Docker的架構Docker是一個開源的應用容器引擎,讓開發(fā)者可打包
    發(fā)表于 07-17 11:05

    ARM平臺實現Docker容器技術

    本帖最后由 Tronlong創(chuàng)龍科技 于 2024-7-26 08:51 編輯 什么是Docker? (1)Docker的架構Docker是一個開源的應用容器引擎,讓開發(fā)者可打包
    發(fā)表于 07-25 14:36

    如何在Docker中創(chuàng)建容器

    Docker是一個開源的引擎,可以輕松的為任何應用創(chuàng)建一個輕量級的、可移植的、自給自足的容器。開發(fā)者在筆記本上編譯測試通過的容器可以批量地在生產環(huán)境中部署,包括VMs(虛擬機)、bare metal
    發(fā)表于 01-03 15:58

    理解Docker容器并暢玩docker

    !命令行!玩docker,簡單幾句命令就夠了。Docker容器響應迅速,執(zhí)行迅速,回憶一下VM啟動要多久?最佳的試驗場所,想怎么玩怎么玩,rm -rf /* 根本不是大問題。主機上刪掉容器
    發(fā)表于 11-05 09:54

    請問docker容器如何查看日志?

    docker容器如何查看日志
    發(fā)表于 11-19 07:29

    Docker容器管理命令(一)

    1、Docker容器管理命令的使用方法查看當前主機本地docker鏡像:啟動容器必須依賴鏡像,所以要獲取到鏡像的唯一標識docker
    發(fā)表于 04-20 17:55

    Docker容器管理命令(二)

    1、Docker容器管理命令的使用方法批量刪除docker 容器docker cp命令docker
    發(fā)表于 04-21 11:31

    Docker入門指南

    ?簡化Arm硬件的應用程序開發(fā)?在開始之前在云中工作并在邊緣部署本指南假設您熟悉容器概念。如果你不熟悉容器的概念,你可以在Docker入門中了解更多。 您還需要以下內容: ?訪問Git
    發(fā)表于 08-02 06:09

    Docker:微容器的優(yōu)勢與構建教程

    非必要的東西也打包進去,所以最后構建出來的鏡像就很龐大,直接導致我們的容器也變得很大。對于剛入門Docker新手來說,大家一開始基本都是用的Docker官方鏡像倉庫里提供的基礎鏡像,
    發(fā)表于 10-10 11:32 ?0次下載

    docker技術入門與實戰(zhàn)

    入門docker的首本書,系統(tǒng)化掌握容器技術棧
    發(fā)表于 06-09 14:38 ?0次下載

    docker容器刪除后數據還在嗎

    Docker作為一個容器化平臺,提供了輕量級的虛擬化解決方案,能夠方便地創(chuàng)建、部署和管理應用程序。然而,對于Docker容器的數據持久性是一個令人關注的問題。當我們刪除一個
    的頭像 發(fā)表于 11-23 09:32 ?1845次閱讀

    docker容器容器之間通信

    Docker是一種輕量級容器化技術,能夠將應用程序及其依賴項封裝在一個獨立、可移植的容器中。而容器化的應用程序通常是以分布式方式設計的,因此實現容器
    的頭像 發(fā)表于 11-23 09:36 ?1554次閱讀

    docker進入容器的方法有哪些

    Docker是一種流行的容器化平臺,它能夠快速構建、交付和運行應用程序。在使用Docker時,我們經常需要進入容器進行調試、管理和運行命令等操作。本文將詳細介紹
    的頭像 發(fā)表于 11-23 09:45 ?1.1w次閱讀

    docker容器有幾種狀態(tài)

    Docker 是一種流行的容器化平臺,它能夠幫助開發(fā)人員將應用程序和其依賴打包成一個獨立的容器,并且能夠在不同的環(huán)境中進行部署和運行。在 Docker 中,
    的頭像 發(fā)表于 11-23 09:50 ?2266次閱讀