ubuntu18.04 搭建 docker,nvidia-docker2,cuda10.2+cudnn7.6.4全过程记录

ubuntu18.04 搭建 docker,nvidia-docker2,cuda10.2+cudnn7.6.4全过程记录

一、下载docker

1、根新ubuntu的apt索引

 sudo apt-get update

2、安装包允许apt通过https使用仓库

 sudo dpkg --configure -a
 sudo apt-get install apt-transport-https ca-certificates curl software-properties-common

3.添加Docker官方GPG key

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

4.设置Docker稳定版仓库

 sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

5.更新apt源索引

 sudo apt-get update

6.安装最新版本Docker CE(社区版)

 sudo apt-get install docker-ce

7.查看安装Docker的版本

$ docker --version
#Docker version 19.03.8, build afacb8b7f0

8.检查Docker CE 是否安装正确

$ sudo docker run hello-world
#报错 Unable to find image 'hello-world:latest' locally

9、查看镜像库 docker images

# 报错
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.40/images/json: dial unix /var/run/docker.sock: connect: permission denied
# 解决
原来只需要 加上 sudo docker images 就可

10、基本命令

# 启动docker
sudo service docker start

# 停止docker
sudo service docker stop

# 重启docker
sudo service docker restart

# 列出镜像
docker image ls

# 拉取镜像
docker image pull library/hello-world

# 删除镜像
docker image rm 镜像id/镜像ID

# 创建容器
docker run [选项参数] 镜像名 [命令]

# 停止一个已经在运行的容器
docker container stop 容器名或容器id

# 启动一个已经停止的容器
docker container start 容器名或容器id

# kill掉一个已经在运行的容器
docker container kill 容器名或容器id

# 删除容器
docker container rm 容器名或容器id

# 查看docker服务是否启动:
systemctl status docker
 
# 若未启动,则启动docker服务:
 sudo systemctl start docker

docker 换镜像源

1、创建配置文件

sudo touch /etc/docker/daemon.json

2、编辑,配置中国科技大学的镜像源,阿里云的也可

{
  "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}

保存退出 :wq

3、重启docker服务

sudo service docker restart

4、查看信息

sudo docker info 
Registry Mirrors:
  https://docker.mirrors.ustc.edu.cn/

换源成功

安装nvidia-docker

1、首先,Ubuntu下查看Nvidia显卡的详细信息:

nvidia-smi
#如果没显示就下载安装
sudo apt install nvidia-340

2、查看cuda 版本:

cat  /usr/local/cuda/version.txt 
or
nvcc -V
 cat /usr/local/cuda/version.txt 
#CUDA Version 10.1.243

查看cudnn版本:

cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2

如果上述命令你都没有输出,那么

3、安装显卡驱动

3.1检查自己电脑的gpu是否CUDA-capable

   sudo  lspci | grep -i nvidia
    #0a:00.0 3D controller: NVIDIA Corporation GM107M [GeForce GTX 850M] (rev a2)

    #没有lspci就安装
    apt install pciutils

3.2禁用nouveau并重启(安装Nvidia显卡的官方驱动和系统自带的nouveau驱动冲突)

sudo lsmod | grep nouveau
#没有lsmod就安装
apt install module-init-tools

如果有输出说明nouveau正在加载

3.3打开禁用列表

sudo gedit /etc/modprobe.d/blacklist.conf

3.4在打开文本的最后一行添加:

blacklist nouveau
options nouveau modeset=0

3.5更新,重启:

    sudo update-initramfs -u
    reboot

3.6 再次查看是否禁用nouveau

sudo    lsmod | grep nouveau
# 现在没有输出,说明禁用了

重点:

  1. 先安装 gcc :
sudo apt -y install gcc-c++

或者

sudo apt install build-essential

1.删除旧的NVIDIA驱动:

sudo apt-get remove nvidia-*
sudo apt-get autoremove

或者:

sudo apt-get --purge remove nvidia-*

sudo ./NVIDIA-Linux-x86_64-410.57.run -uninstall

sudo update-initramfs -u
sudo reboot now

2.更新系统软件仓库列表

 sudo apt-get update

3.使用下面的命令查看系统推荐安装哪个版本的N卡驱动

ubuntu-drivers devices

== /sys/devices/pci0000:00/0000:00:1c.3/0000:07:00.0 ==
modalias : pci:v00008086d000008B3sv00008086sd00008470bc02sc80i00
vendor   : Intel Corporation
model    : Wireless 3160 (Dual Band Wireless AC 3160)
manual_install: True
driver   : backport-iwlwifi-dkms - distro free

== /sys/devices/pci0000:00/0000:00:01.1/0000:0a:00.0 ==
modalias : pci:v000010DEd00001391sv00001028sd00000680bc03sc02i00
vendor   : NVIDIA Corporation
model    : GM107M [GeForce GTX 850M]
driver   : nvidia-driver-435 - distro non-free recommended
driver   : nvidia-driver-390 - distro non-free
driver   : nvidia-340 - distro non-free
driver   : nvidia-driver-430 - distro non-free
driver   : xserver-xorg-video-nouveau - distro free builtin

在上面这些输出中可以看到recommended关键词,说明系统推荐安装的N卡驱动是"nvidia-driver-435"
4.选择你看到推荐版本安装,本例使用nvidia-driver-435,然后安装几个必要组件,命令如下

sudo apt-get install nvidia-settings nvidia-driver-435 nvidia-prime

我的建议安装的是nvidia-435版本驱动,然后继续在命令行输入:

 sudo ubuntu-drivers autoinstall

将会自动安装所推荐的nvidia-435版本驱动
5.安装双显卡切换指示器

 sudo add-apt-repository ppa:nilarimogard/webupd8
 # 报错解决sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev
##在Terminal打开sources.list
sudo gedit /etc/apt/sources.list
##在sources.list文件末尾添加源 ,可以选择版本
deb http://ppa.launchpad.net/nilarimogard/webupd8/ubuntu bionic main 
deb-src http://ppa.launchpad.net/nilarimogard/webupd8/ubuntu bionic main 
##在Terminal添加Signing Key
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys  1DB29AFFF6C70907B57AA31F531EE72F4C9D234C
##更新
sudo apt-get update && sudo apt-get upgrade
## 可能会有网络问题,可以多试几次,或者#成功之后就可以安装软件了
 sudo apt-get install prime-indicator

6.重新启动

sudo reboot  

新启动后会在右上角看到一个显卡指示器,默认情况下是Nvidia图标,说明现在使用的是N卡,点击这个图标选择"Quick switch graphics…",按下确认后会自动重启桌面,此时就会切换到Intel显卡了,图标也变成了Intel。

大家可以尝试着在两个显卡之间切换,并使用下面的命令查看是否切换成功,然后测试其性能

切换到Intel卡后,查看N卡是否关闭,如果N卡末尾是(rev ff),则表示成功关闭了N卡,现在使用的是I卡,如果末尾不是ff,则说明现在使用的是N卡

lspci | grep VGA

00:02.0 VGA compatible controller: Intel Corporation .... (rev 09)

01:00.0 VGA compatible controller: NVIDIA Corporation .... (rev ff)

如果上面的命令没有看到NVIDIA卡,可以直接使用下面的命令来查看N卡状态

~$ lspci | grep NVI

qyh@qyh-mas:$ lspci | grep NVI
3c:00.0 3D controller: NVIDIA Corporation GM108M [GeForce 940MX] (rev a2)
qyh@qyh-mas: $ lspci | grep VGA
00:02.0 VGA compatible controller: Intel Corporation Skylake GT2 [HD Graphics 520] (rev 07)

使用下面的命令来测试显卡的性能,数字越大代表显卡性能越好,这条命令可以明显看到N卡的性能强于I卡

~$ glxspheres64 

安装CUDA 10.2

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-o8IdpCcr-1587451070923)(/home/bob/.config/Typora/typora-user-images/image-20200415164353263.png)]

可以建个文件夹,然后在文件夹中输入上述两条命令

mkdir nvidia_cuda
cd  nvidia_cuda
"
wget http://developer.download.nvidia.com/compute/cuda/10.2/Prod/local_installers/cuda_10.2.89_440.33.01_linux.run
sudo sh cuda_10.2.89_440.33.01_linux.run

"

报错

正在连接 127.0.0.1:32787... 失败:拒绝连接

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ob9Y2Wiw-1587451070930)(/home/bob/.config/Typora/typora-user-images/image-20200415165720452.png)]

解决

 # 查看端口使用情况
 sudo netstat -ntpl  
 # 安装命令 netsta
 sudo apt-get install net-tools
 sudo netstat -ntp
 “
 激活Internet连接 (仅服务器)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      931/systemd-resolve 
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      3695/cupsd          
tcp6       0      0 ::1:631                 :::*                    LISTEN      3695/cupsd          

 ”
 没有占用的端口
 查看是否走代理
  export | grep -i proxy
  “
 declare -x HTTPS_PROXY="http://127.0.0.1:32787/"
declare -x HTTP_PROXY="http://127.0.0.1:32787/"
declare -x NO_PROXY="localhost,127.0.0.0/8,::1"
declare -x http_proxy="http://127.0.0.1:32787/"
declare -x https_proxy="http://127.0.0.1:32787/"
declare -x no_proxy="localhost,127.0.0.0/8,::1" 
  
  ”
  确实走了代理
  #解决
  关闭服务
   unset http_proxy
   unset HTTP_PROXY
   unset https_proxy
   unset HTTPS_PROXY
   

2.再出现的提示中选择continue和accept,直到出现如下画面:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rmxcLNxC-1587451070934)(/home/bob/.config/Typora/typora-user-images/image-20200415205226623.png)]

Nvidia的显卡驱动,这里不安装driver,那么只需要移动到Driver,按enter键,将"[]"中的X去掉即是不选择.

3 下载成功

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zQldGj4p-1587451070939)(/home/bob/.config/Typora/typora-user-images/image-20200415210733328.png)]

4.添加环境变量

vi ~/.bashrc

在文件末尾添加

export PATH="/usr/local/cuda-10.2/bin:$PATH"
export LD_LIBRARY_PATH="/usr/lcoal/cuda-10.2/lib64:$LD_LIBRARY_PATH"

最后使其生效

source ~/.bashrc

5.终端输入

cd /usr/local/cuda-10.2/samples/1_Utilities/deviceQuery
sudo make
./deviceQuery

结果

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-265DhAsT-1587451070943)(/home/bob/.config/Typora/typora-user-images/image-20200415215254275.png)]

不知道成功没有

6、查看显卡驱动信息:

nvidia-smi

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VZFJKXXK-1587451070947)(/home/bob/.config/Typora/typora-user-images/image-20200416165331160.png)]

这说明驱动是安装成功的

7、查看cuda是否安装成功

cat /usr/local/cuda/version.txt

我现在的版本是“CUDA Version 10.2.89”

8、查看cudnn的版本

    cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2

下载cudnn

1.下载cuDNN v7.6.4 (eptember27,2019 ), for CUDA 10.1
https://developer.nvidia.com/rdp/cudnn-archive

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rQ7YXCId-1587451070953)(/home/bob/.config/Typora/typora-user-images/image-20200416171411766.png)]

进入解压后的cudnn目录 应该能看到cuda文件夹

sudo cp cuda/include/cudnn.h /usr/local/cuda/include/ 
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64/ 
sudo chmod a+r /usr/local/cuda/include/cudnn.h 

再次查看cudnn的版本

cat /usr/local/cuda/include/cudnn.h |grep CUDNN_MAJOR -A 2

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LHGmG8vY-1587451070955)(/home/bob/.config/Typora/typora-user-images/image-20200416172012545.png)]

从上到下输出7 6 4 即表示cudnn7.6.4

你可能感兴趣的:(tensorflow-GPU,docker,cuda)