1. 程式人生 > >安裝使用NVIDIA-Docker-- 可使用GPU的Docker容器

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

原生 wid emctl pat limit 深度學習 sym -a 更新

nvidia-docker是一個可以使用GPUdockernvidia-docker是在docker上做了一層封裝,通過nvidia-docker-plugin,然後調用到docker上,其最終實現的還是在docker的啟動命令上攜帶一些必要的參數。因此在安裝nvidia-docker之前,還是需要安裝docker的。

docker一般都是使用基於CPU的應用,而如果是GPU的話,就需要安裝特有的硬件環境,比如需要安裝nvidia driver。所以docker容器並不直接支持Nvidia GPU。為了解決這個問題,最早的處理辦法是在容器內部,全部重新安裝nvidia driver,然後通過設置相應的設備參數來啟動container

,然而這種辦法是很脆弱的。因為宿主機的driver的版本必須完全匹配容器內的driver版本,這樣導致docker image無法共享,很可能本地機器的不一致導致每臺機器都需要去重復操作,這很大的違背了docker的設計之初。

為了使docker image能很便利的使用Nvidia GPU,從而產生了nvidia-docker,由它來制作nvidia driverimage,這就要求在目標機器上啟動container時,確保字符設備以及驅動文件已經被掛載。

nvidia-docker-plugin是一個docker plugin,被用來幫助我們輕松部署containerGPU混合的環境下。類似一個守護進程,發現宿主機驅動文件以及GPU

設備,並且將這些掛載到來自docker守護進程的請求中。以此來支持docker GPU的使用。

需提前安裝好的軟件

docker

由於nvidia docker是基於docker基礎之上運行的,因此需要安裝原生的docker。

1.12.6版本的docker安裝可查看這篇文章:Docker安裝使用命令。http://www.linuxidc.com/Linux/2017-12/149575.htm

Docker CE版本可查看這篇文章:Docker CE安裝教程。http://www.linuxidc.com/Linux/2017-12/149576.htm

nvidia顯卡驅動

毫無疑問,要想使用GPU,必須要安裝顯卡驅動,這樣nvidia docker

才能正常運行。

顯卡驅動的安裝方式可查看這篇文章: CentOS集成GTX-1080Ti顯卡搭建深度學習環境全過程。http://www.linuxidc.com/Linux/2017-12/149577.htm

這篇文章中講解了CentOS安裝顯卡搭建深度學習環境的全過程,顯卡驅動就是其中一項工作,因此這裏就不單獨寫了,這篇文章中有安裝的過程。

安裝nvidia docker

1、下載nvidia-docker.repo文件,並將該文件輸出到/etc/yum.repos.d/nvidia-docker.repo

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

操作結果:

技術分享圖片

2、查找可安裝的nvidia docker版本

yum search --showduplicates nvidia-docker

運行上面的語句,會出現下面這張圖中的信息,一路點擊y

技術分享圖片

最終輸出結果是下面這張圖:

技術分享圖片

大家可以從中選擇自己需要安裝的nvidia docker版本,這裏我安裝的是docker1.12.6版本的。因此我選擇安裝倒數第一個版本的nvidia docker

3、安裝nvidia-docker

yum install nvidia-docker-1.0.1-1.x86_64

點擊回車,系統就會安裝nvidia-docker,需要選yes\no的地方輸入y,再點擊回車,最終安裝成功。

運行nvidia docker

1、運行docker

// 運行docker
systemctl start docker
// 加入開機啟動
systemctl enable docker
// 查看狀態
systemctl status coker

2、運行nvidia-docker

systemctl start nvidia-docker
systemctl enable nvidia-docker
systemctl status nvidia-docker

nvidia-docker的操作命令與docker基本相同,所以操作起來沒有什麽障礙。

kubernetes調用GPU

yaml文件配置:

apiVersion: v1
kind: Pod
metadata:
  name: gpu-test
spec:
  volumes:
  - name: nvidia-driver
    hostPath:
      path: /var/lib/nvidia-docker/volumes/nvidia_driver/384.69
  - name: cgroup
    hostPath:
      path: /sys/fs/cgroup
  containers:
  - name: tensorflow
    image: tensorflow:0.11.0-gpu
    ports:
    - containerPort: 8000
    resources:
      limits:
        alpha.kubernetes.io/nvidia-gpu: 1
    volumeMounts:
    - name: nvidia-driver
      mountPath: /usr/local/nvidia/
      readOnly: true
    - name: cgroup
      mountPath: /sys/fs/cgroup
  1. alpha.kubernetes.io/nvidia-gpu: 1:表示只使用1塊gpu

  2. path: /var/lib/nvidia-docker/volumes/nvidia_driver/384.69:宿主機driver位置,安裝了nvidia-docker之後有的,當然需要保證宿主機nvidia driver是已經安裝ok的,應該是安裝了nvidia-docker之後,會發現宿主機的driver,然後映射到此。

  3. path: /sys/fs/cgroup:掛載該目錄也是為了識別顯卡,使容器內部能夠使用宿主機顯卡。

  4. volumeMounts:將宿主機目錄掛載到容器內部,這個標簽下的配置項就是要把宿主機目錄掛載到容器內部的那個目錄,通過name標識。

通過這些目錄掛載配置,啟動pod之後,容器就能夠正常識別GPU並進行工作了。

更多Docker相關教程見以下內容

Docker安裝應用(CentOS 6.5_x64) http://www.linuxidc.com/Linux/2014-07/104595.htm

Ubuntu 16.04 服務器上配置使用 Docker http://www.linuxidc.com/Linux/2017-06/145176.htm

Ubuntu 15.04下安裝Docker http://www.linuxidc.com/Linux/2015-07/120444.htm

Docker 安裝實例 http://www.linuxidc.com/Linux/2017-04/142666.htm

Docker 創建基礎鏡像 http://www.linuxidc.com/Linux/2017-05/144112.htm

在 Ubuntu 15.04 上如何安裝Docker及基本用法 http://www.linuxidc.com/Linux/2015-09/122885.htm

Ubuntu 16.04上Docker使用手記 http://www.linuxidc.com/Linux/2016-12/138490.htm

使用Docker分分鐘啟動常用應用 http://www.linuxidc.com/Linux/2017-04/142649.htm

Ubuntu 16.04下Docker修改配置文件不生效解決辦法 http://www.linuxidc.com/Linux/2017-05/143862.htm

Docker 的詳細介紹:請點這裏
Docker 的下載地址:請點這裏

本文永久更新鏈接地址:http://www.linuxidc.com/Linux/2017-12/149578.htm

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