容器將應用程序封裝到隔離的虛擬環境中,以簡化數據中心的部署。通過將所有應用程序依賴項 (例如二進制文件和庫) 都包括在內,應用程序容器能在任何數據中心環境中無縫地運行。
英偉達基於Docker 提供的NVIDIA-Docker可用於容器化 GPU 加速的應用程序。這意味着無需進行任何修改即可輕松容器化和隔離加速的應用程序,並將其部署到任何受支持的、可使用 GPU 的基礎架構上。 管理和監控加速的數據中心將變得空前容易。
一、安裝Docker
在前面的博文中,我們已經介紹了在Ubuntu系統中安裝GPU環境的方法,對於還沒有完成這些前提步驟的讀者,可以參考:
《在Ubuntu 18.04安裝NVIDIA GPU驅動》
《在Ubuntu 18.04中配置GPU環境:安裝CUDA 9.0等》
你可以在命令行輸入 nvcc --version來查看一下當前環境下的CUDA版本,如下圖所示:
這部分主要參考官網上關於Docker的文檔頁“Get Docker CE for Ubuntu”,同樣推薦讀者查閱。我們基本是按照其中的步驟進行安裝的。有時,Ubuntu上會默認安裝有Docker。若先前有安裝Docker,則需要先卸載(寫在的方法在官方文檔上有詳細介紹)。為了確定本機上沒有安裝Docker,執行命令: docker run hello-world。如下所示,可見我的機器上並沒有安裝Docker,所以可以繼續后面的步驟。
首先用下面的命令更新apt
包的索引:
$ sudo apt-get update
如下圖所示:
把Docker倉庫加進到apt里,反斜杠\代表一行,只是換行寫更清晰:
$ sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ gnupg-agent \ software-properties-common
如下圖所示:
添加Docker的官方GPG key:
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
驗證當前你所擁有的key的指紋是9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88,方法是搜索指紋中的后八個字符。
$ sudo apt-key fingerprint 0EBFCD88
然后用下面的語句來建立穩定的倉庫:
$ sudo add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable"
如下圖所示:
接下來正式安裝docker:
$ sudo apt-get update
$ sudo apt-get install docker-ce
如下圖所示:
最后一個命令是驗證docker是否安裝成功,它會下載並執行hello-world鏡像。如果安裝正確,執行后的結果應該類似下面這樣:
二、安裝NVIDIA-Docker
安裝完成Docker並檢查安裝正確(能跑出來hello-world)后,如果需要Docker容器中有GPU支持,需要再安裝NVIDIA-Docker,同樣參考該項目的主頁(鏈接)。
可以看到在Quick start小節,選擇我們Ubuntu的發行版,依次執行命令:
# Add the package repositories curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | \ sudo apt-key add - distribution=$(. /etc/os-release;echo $ID$VERSION_ID) curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | \ sudo tee /etc/apt/sources.list.d/nvidia-docker.list sudo apt-get update
如下圖所示:
正式安裝NVIDIA-Docker:
# Install nvidia-docker2 and reload the Docker daemon configuration sudo apt-get install -y nvidia-docker2 sudo pkill -SIGHUP dockerd
用最新的CUDA鏡像來測試一下nvidia-smi(檢查是否安裝成功,安裝成功,則會顯示關於GPU的信息)。
# Test nvidia-smi with the latest official CUDA image docker run --runtime=nvidia --rm nvidia/cuda:9.0-base nvidia-smi
如下圖所示: