1. 程式人生 > 實用技巧 >nvidia-docker(GPU)和儲存驅動(storage_driver)

nvidia-docker(GPU)和儲存驅動(storage_driver)

一、docker使用nvidia GPU

1、nvidia-docker2

安裝使用NVIDIA-Docker--使用GPU的Docker容器

https://blog.csdn.net/qq_31747765/article/details/108922204

2、nvidia-container-toolkit

最新版的nvidia-docker就是nvidia-container-toolkit,比nvidia-docker2更加優秀

官方的解釋是"Usage of nvidia-docker2 packages are deprecated since NVIDIA GPUs are now natively supported as devices in the Docker runtime"。(機翻:不贊成使用nvidia-docker2包,因為nvidia GPU現在在Docker執行時本機作為可支援裝置)

nvidia-container-toolkit需要主機已安裝當前新版的docker 19.03

使用nvidia-container-toolkit的最大優點:

linux主機不需要安裝cuda和cudnn,僅安裝顯示卡驅動即可(tensorflow和nvidia-docker官方均強調這一點)

3、實操

設定下載源

yum install https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm

curl -s -L https://nvidia.github.io/nvidia-docker/centos7/x86_64/nvidia-docker.repo | sudo tee /etc/yum.repos.d/nvidia-docker.repo  

檢測顯示卡驅動和型號

$ sudo yum install nvidia-detect

$ nvidia-detect -v
Probing for supported NVIDIA devices...
[10de:1e04] NVIDIA Corporation TU102 [GeForce RTX 2080 Ti]
This device requires the current 440.64 NVIDIA driver kmod-nvidia
[1af4:1050] Red Hat, Inc. Virtio GPU

4、下載對應版本的顯示卡驅動

NIVID官網:http://www.geforce.cn/drivers

5、查詢可安裝的nvidia docker版本

yum search --showduplicates nvidia-docker

下載的時候,在手動搜尋驅動程式中,大致勾選自己機器的型別,然後查詢到跟步驟3檢測到的型號對應的版本進行下載

nvidia-docker配置如下:

$ cat /etc/docker/daemon.json
{
  "registry-mirrors": ["https://xxxxxxx"],   #替換成自己的harbor倉庫地址
  "live-restore": true,
  "default-shm-size": "128M",
  "max-concurrent-downloads": 10,
  "oom-score-adjust": -1000,
  "debug": false,
  "exec-opts": ["native.cgroupdriver=cgroupfs"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "20m",
    "max-file": "3"
  },
  "storage-driver": "overlay2",
  "default-runtime": "nvidia",
  "storage-opts": [
    "overlay2.override_kernel_check=true"
  ],
  "runtimes": {
    "nvidia": {
      "path": "/usr/bin/nvidia-container-runtime",
      "runtimeArgs": []
    }
  }
}

注意:

1、如果您有自定義/etc/docker/daemon.json,則nvidia-docker2程式包會覆蓋它,可能導致docker 原有的 volume配置會全部丟失。

2、核心問題,centos7核心3.10.0-957.el7.x86_64適配成功過,若是不滿足,請升級核心

# 資料 https://unix.stackexchange.com/questions/115289/driver-install-kernel-source-not-found
yum -y install kernel-devel kernel-header

二、docker的儲存驅動

https://docs.docker.com/storage/storagedriver/select-storage-driver/ 官網說明

1、docker支援的儲存驅動

理想情況下,很少有資料寫入到容器的可寫層,並且您使用Docker捲來寫入資料。但是,某些工作負載要求您能夠寫入容器的可寫層。這是儲存驅動程式進入的地方。

Docker支援以下儲存驅動程式:

  • overlay2是當前所有受支援的Linux發行版的首選儲存驅動程式,不需要任何額外的配置
  • aufs是在核心3.13上的Ubuntu 14.04上執行的Docker 18.06及更早版本的首選儲存驅動程式,而該核心不支援overlay2
  • devicemapper支援,但是direct-lvm對於生產環境是必需的,因為loopback-lvm零配置雖然效能很差。devicemapper是CentOS和RHEL的推薦儲存驅動程式,因為它們的核心版本不支援overlay2。但是,當前版本的CentOS和RHEL現在支援overlay2,這是推薦的驅動程式。
  • 如果btrfszfs驅動程式是後備檔案系統(安裝了Docker的主機的檔案系統),則使用它們。這些檔案系統允許使用高階選項,例如建立“快照”,但需要更多的維護和設定。這些中的每一個都依賴於正確配置的後備檔案系統。
  • vfs儲存驅動程式用於測試目的,以及無法使用寫時複製檔案系統的情況。此儲存驅動程式的效能很差,通常不建議在生產中使用

2、Supported backing filesystems

3、centos7使用overlay2

centos7中 xfs型別的檔案系統,使用 xfs_info / ,ftype=1才支援overlay2,如果是0則不支援

$ xfs_info /
meta-data=/dev/sda3 isize=512 agcount=4, agsize=3080064 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0 spinodes=0 data = bsize=4096 blocks=12320256, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=1 log =internal bsize=4096 blocks=6015, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0

centos 系統使用overlay,所以如果是xfs的檔案系統,需要重新格式化

系統預設格式化xfs是沒有這個引數的,所以需要重新格式化新增引數,才能支援

mkfs.xfs -n ftype=1 /dev/sdxxxx

如果是kickstart 安裝的系統,用如下命令:

logvol / --fstype xfs --mkfsoptions='-n ftype=1'

注意:

1、如果用kickstart,iso/initd.img/vmlinuz 必須是同一版本

2、修改驅動之前做好資料備份!!!!!

參考:

https://blog.csdn.net/qq_42294701/article/details/102863800 NVIDIA Docker2安裝教程及踩坑歷險記

https://blog.csdn.net/guaxiaoqian/article/details/100662971 GPU機器CentOS環境安裝nvidia驅動,部署docker環境教程

https://blog.csdn.net/a632189007/article/details/78801166 Nvidia-Docker安裝使用 -- 可使用GPU的Docker容器

https://blog.csdn.net/u011698800/article/details/109548440 Centos8安裝英偉達顯示卡驅動並通過docker部署深度學習環境

https://blog.csdn.net/u011698800/article/details/107607187 Docker部署容器使用GPU並搭建jupyter環境

https://www.jianshu.com/p/f25ccedb996e 安裝NVIDIA-DOCKER

https://gitlab.com/nvidia 比較齊全

https://www.jianshu.com/p/f25ccedb996e 安裝NVIDIA-DOCKER(ubantu)

https://blog.csdn.net/moshenglv/article/details/90342907 Docker之幾種storage-driver比較

centos7 nvidia驅動安裝失敗問題的解決辦法

https://blog.csdn.net/lwhsyit/article/details/82774438