# Ubuntu16.04下nvidia驅(qū)動+docker+nvidia-docker+cuda9.0+cudnn7.0安裝指南
## 宿主機安裝nvidia驅(qū)動
### 打開終端,先刪除舊的驅(qū)動:
sudo apt-get purge nvidia*
### 禁用自帶的 nouveau nvidia驅(qū)動
sudo gedit /etc/modprobe.d/blacklist.conf
看下Nouveau是否已經(jīng)被禁用
lsmod | grep nouveau
如果已經(jīng)沒有任何顯示說明不用禁用了仰冠,否則繼續(xù)下面操作
sudo vim /etc/modprobe.d/blacklist-nouveau.conf #創(chuàng)建一個文件(注:按一下i鍵乏冀,表示現(xiàn)在進行內(nèi)容插入)
并添加如下內(nèi)容:
blacklist nouveau
options nouveau modeset=0
注:退出可用兩個命令中任意一個:
按完esc鍵后,按shift+zz 或者
按完esc鍵后,輸入“:wq!”雙引號里面的內(nèi)容
再更新一下:
sudo update-initramfs –u
確認下Nouveau是已經(jīng)被禁用:
lsmod | grep nouveau
沒有輸出什么東西洋只,說明已經(jīng)成功關(guān)閉了辆沦。
### 關(guān)閉X-window服務(wù):
Ctrl+Alt+F1切換到無桌面命令終端:這里lightdm是你自己的顯示管理器,也可能是gdm识虚,kdm肢扯,到底是哪一個可以使用 cat /etc/X11/default-display-manager進行查看,然后修改担锤,并關(guān)閉顯示管理器蔚晨。這里下面幾小步建議用手機拍照,對著照片來做肛循,因為你可能不太熟悉
sudo service lightdm stop
此時正式進入終端界面:
Login:用戶賬號
Password:用戶密碼
安裝:
cd? /home/wlh/tmp # 導(dǎo)到你的下載的驅(qū)動放在哪里的地址
sudo sh NVIDIA-Linux-x86_64-387.12.run
按照如下步驟安裝:
(1)accept
(2)contiuned install
后面默認yes安裝就好了
啟動顯示器:(lightdm只是我的顯示管理器铭腕,你可能是前面的說的gdm)
sudo service lightdm start
然后按Ctrl+Alt+F7 進入到桌面進行操作
檢查是否成功
nvidia-smi
## docker安裝
### 下載地址:https://download.docker.com/linux/ubuntu/dists/xenial/pool/stable/amd64/
containerd.io_1.2.5-1_amd64.deb
docker-ce-cli_18.09.4_3-0_ubuntu-xenial_amd64.deb
docker-ce_18.09.4~3-0~ubuntu-xenial_amd64.deb
dpkg -i containerd.io_1.2.5-1_amd64.deb
dpkg -i docker-ce-cli_18.09.4_3-0_ubuntu-xenial_amd64.deb
dpkg -i docker-ce_18.09.4~3-0~ubuntu-xenial_amd64.deb
使用 docker 命令試試安裝成功沒有。
### 建立 docker 組:
$ sudo groupadd docker
將當(dāng)前用戶加入 docker 組:
$ sudo usermod -aG docker $USER
## nvidia docker安裝
### If you have nvidia-docker 1.0 installed: we need to remove it and all existing GPU containers
docker volume ls -q -f driver=nvidia-docker | xargs -r -I{} -n1 docker ps -q -a -f volume={} | xargs -r docker rm -f
sudo apt-get purge -y nvidia-docker
### 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
### 執(zhí)行下載5個命令多糠,下載5個包到當(dāng)前目錄累舷,拷貝這些包到服務(wù)器上。
apt download libnvidia-container1
apt download libnvidia-container-tools
apt download nvidia-container-runtime-hook
apt download nvidia-container-runtime
apt download nvidia-docker2
在服務(wù)器上執(zhí)行熬丧,dpkg -i libnvidia* nvidia* 即可一次安裝這5個包笋粟。
### Test nvidia-smi with the latest official CUDA image
docker run --runtime=nvidia --rm nvidia/cuda:9.0-base nvidia-smi
## 安裝cuda9.0
### 首先去官網(wǎng)下載cuda9.0怀挠, 下載那個1.6G的.run文件析蝴,下載完畢就可以正式安裝了害捕。
進入下載目錄,給文件添加運行權(quán)限:
chmod +x ./cuda_9.0.176_384.81_linux.run
### 運行安裝
sudo ./cuda_9.0.176_384.81_linux.run
啟動安裝程序闷畸,一直按空格到最后(可以選擇Ctrl+c跳過)尝盼,不用擔(dān)心,到99%的時候佑菩,輸入accept接受條款
注意:第一個提醒你是否安裝驅(qū)動時盾沫,選“n”殿漠,其余都“y”
安裝完畢后就需要添加環(huán)境了赴精,這步很重要!=驶稀蕾哟!
gedit ~/.bashrc
### 把下面的內(nèi)容添加到最后:
export CUDA_HOME=/usr/local/cuda
export PATH=$PATH:$CUDA_HOME/bin
export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
### 測試是否安裝成功
nvcc -V
## 安裝cudnn7
### 下載完直接解壓,解壓會出現(xiàn)一個cuda文件夾莲蜘,里面有兩個文件include 和 lib64票渠,把里面的文件copy到/usr/local/cuda/里面相應(yīng)的目錄里问顷。 如果你就在local下解壓的就不要移動了杜窄。只需要給文件加讀權(quán)限即可肠骆!
sudo chmod a+x /usr/local/cuda/include/cudnn.h
sudo chmod a+x /usr/local/cuda/lib64/libcudnn*
### 然后更新網(wǎng)絡(luò)連接:
cd /usr/local/cuda/lib64/?
sudo chmod +r libcudnn.so.7.0.5? # 自己查看.so的版本?
sudo ln -sf libcudnn.so.7.0.5. libcudnn.so.7?
sudo ln -sf libcudnn.so.7 libcudnn.so?
sudo ldconfig
### 查看cudnn版本,檢查是否安裝好:
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
## 加載打包的鏡像
$ docker load<jq_tensorflow1.8-cuda9.0-cudnn7-devel-ubuntu16.04.tar
## 啟動容器
docker run --runtime=nvidia -it -v /home/dock/Downloads:/usr/Downloads name /bin/bash
### 啟動報錯解決辦法:
Systemd drop-in file
sudo mkdir -p /etc/systemd/system/docker.service.d
sudo tee /etc/systemd/system/docker.service.d/override.conf <<EOF
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd --host=fd:// --add-runtime=nvidia=/usr/bin/nvidia-container-runtime
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
Daemon configuration file
sudo tee /etc/docker/daemon.json <<EOF
{
"runtimes": {
"nvidia": {
"path": "/usr/bin/nvidia-container-runtime",
"runtimeArgs": []
}
}
}
EOF
sudo pkill -SIGHUP dockerd
再去開啟鏡像羞芍,done哗戈。
## 配置容器內(nèi)環(huán)境
## 容器后臺運行退出命令:CTRL+p+q
## 后臺容器重新進入命令:docker exec -it [container id] /bin/bash