CentOS7 Nvidia Docker环境搭建
最近在搞tensorflow的一些东西,话说这东西是真的皮,搞不懂。但是环境还是磕磕碰碰的搭起来了
其实本来是没想到用docker的,但是就一台配置较好的服务器,还要运行公司的其他环境,vmwareesxi用起来太费劲,还是算了。
环境:
系统:CentOS77.41708
显卡:Nvidia1080Ti
下载所有需要的东东
1、docker-ceyumrepo:https://download.docker.com/linux/centos/docker-ce.repo
2、nvidia-dockeryumrepo:https://nvidia.github.io/nvidia-docker/centos7/x86_64/nvidia-docker.repo
3、nvidiacudayumrepo:http://developer.download.nvidia.com/compute/cuda/repos/rhel7/x86_64/cuda-repo-rhel7-9.1.85-1.x86_64.rpm
4、nvidiacudnn:https://developer.nvidia.com/cudnn
这个东西需要注册nvidia账号,就不给直接下载地址了。
5、nvidia驱动:http://www.nvidia.cn/Download/index.aspx?lang=cn
按自己的显卡型号下载
6、nvidiadockerfile:https://hub.docker.com/r/nvidia/cuda/
这里面可以看到很多dockerfile,选择
9.0-base-centos7(9.0/base/Dockerfile)
其他的cuda9.1这些应该也可以用,另外有像devel和runtime这样的,其实就是yum安装的cuda包不太一样,没多大关系。
点进去后复制下来保存为Dockerfile文件,但是之后搞的时候发现有点问题,修改了一下,可以从这儿复制
FROMcentos:7 LABELmaintainer"NVIDIACORPORATION" RUNNVIDIA_GPGKEY_SUM=d1be581509378368edeec8c1eb2958702feedf3bc3d17011adbf24efacce4ab5&&\ curl-fsSLhttps://developer.download.nvidia.com/compute/cuda/repos/rhel7/x86_64/7fa2af80.pub|sed'/^Version/d'>/etc/pki/rpm-gpg/RPM-GPG-KEY-NVIDIA&&\ echo"$NVIDIA_GPGKEY_SUM/etc/pki/rpm-gpg/RPM-GPG-KEY-NVIDIA"|sha256sum-c--strict- #COPYcuda.repo/etc/yum.repos.d/cuda.repo ENVCUDA_VERSION9.0.176 ENVCUDA_PKG_VERSION9-0-$CUDA_VERSION-1 #RUNyuminstall-y\ #cuda-cudart-$CUDA_PKG_VERSION&&\ #ln-scuda-9.0/usr/local/cuda&&\ #rm-rf/var/cache/yum/* #nvidia-docker1.0 LABELcom.nvidia.volumes.needed="nvidia_driver" LABELcom.nvidia.cuda.version="${CUDA_VERSION}" RUNecho"/usr/local/nvidia/lib">>/etc/ld.so.conf.d/nvidia.conf&&\ echo"/usr/local/nvidia/lib64">>/etc/ld.so.conf.d/nvidia.conf ENVPATH/usr/local/nvidia/bin:/usr/local/cuda/bin:${PATH} ENVLD_LIBRARY_PATH/usr/local/nvidia/lib:/usr/local/nvidia/lib64 #nvidia-container-runtime ENVNVIDIA_VISIBLE_DEVICESall ENVNVIDIA_DRIVER_CAPABILITIEScompute,utility ENVNVIDIA_REQUIRE_CUDA"cuda>=9.0"
所有的文件
[root@localhostnvidia]#pwd /root/nvidia [root@localhostnvidia]#ll total420000 drwxr-xr-x.2rootroot4096Feb1010:50centos-gpu -rw-r--r--.1rootroot3335Jan2910:36cuda-repo-rhel7-9.1.85-1.x86_64.rpm -rw-r--r--.1rootroot348817823Feb616:26cudnn-9.0-linux-x64-v7.tgz -rw-r--r--.1rootroot2424Feb910:36docker-ce.repo -rw-r--r--.1rootroot796Feb917:11nvidia-docker.repo -rwxr-xr-x.1rootroot81242220Jan3114:19NVIDIA-Linux-x86_64-390.25.run
centos-gpu里有Dockerfile文件
准备工作
直接上命令,一看就明白
[root@localhostnvidia]#cpdocker-ce.reponvidia-docker.repo/etc/yum.repos.d/ [root@localhostnvidia]#rpm-ivhcuda-repo-rhel7-9.1.85-1.x86_64.rpm [root@localhostnvidia]#yuminstallepel-release [root@localhostnvidia]#yuminstallgccgcc-c++ [root@localhostnvidia]#yuminstallkernel*
安装驱动
[root@localhostnvidia]#echo"blacklistnouveau">>/etc/modprobe.d/blacklist.conf [root@localhostnvidia]#mv/boot/initramfs-$(uname-r).img/boot/initramfs-$(uname-r).img.bakdracut-v/boot/initramfs-$(uname-r).img$(uname-r) [root@localhostnvidia]#init3 [root@localhostnvidia]#chmod+xNVIDIA-Linux-x86_64-390.25.run [root@localhostnvidia]#./NVIDIA-Linux-x86_64-390.25.run
大概步骤就是这样,如果出现问题,可以直接网上找一找,应该不会太难
安装和启动docker
[root@localhostnvidia]#yuminstalldocker-cenvidia-docker [root@localhostnvidia]#systemctlenabledocker [root@localhostnvidia]#systemctlstartdocker [root@localhostnvidia]#systemctlenablenvidia-docker [root@localhostnvidia]#systemctlstartnvidia-docker
记得显卡驱动一定要先装好,nvidia-docker才能正常启动
制作docker镜像
[root@localhostnvidia]#yuminstallcuda-cudart-9-0-9.0.176-1 [root@localhostnvidia]#ln-scuda-9.0/usr/local/cuda [root@localhostnvidia]#nvidia-dockerbuild-tcentos-nvidia/root/nvidia/centos-gpu
如果你是用的我修改的Dockfile应该不会有什么问题,如果你是用的原版的,可能会在
#COPYcuda.repo/etc/yum.repos.d/cuda.repo
出错,但是咱们已经下载cuda的repo,并安装了,所以这一步可以不用。
镜像制作结束后,可以用命令dockerimages查看一下:
[root@localhostcentos-gpu]#dockerimages REPOSITORYTAGIMAGEIDCREATEDSIZE centos-nvidialatesta02c8e0ad5ca2hoursago207MB
如果有这一行应该就算是成功了。
生成docker
[root@localhostcentos-gpu]#nvidia-dockerrun--name="centos-gpu2"-tia02c/bin/bash [root@34d532e76913/]#nvidia-smi SatFeb1003:42:202018 +-----------------------------------------------------------------------------+ |NVIDIA-SMI390.25DriverVersion:390.25| |-------------------------------+----------------------+----------------------+ |GPUNamePersistence-M|Bus-IdDisp.A|VolatileUncorr.ECC| |FanTempPerfPwr:Usage/Cap|Memory-Usage|GPU-UtilComputeM.| |===============================+======================+======================| |0GeForceGTX108...Off|00000000:02:00.0Off|N/A| |23%17CP88W/250W|10MiB/11178MiB|0%Default| +-------------------------------+----------------------+----------------------+ +-----------------------------------------------------------------------------+ |Processes:GPUMemory| |GPUPIDTypeProcessnameUsage| |=============================================================================| |Norunningprocessesfound| +-----------------------------------------------------------------------------+ [root@34d532e76913/]#exit
如果类似于上面的输出结果,差不多就可以了。
使用Docker
[root@localhostcentos-gpu]#nvidia-dockerps-a CONTAINERIDIMAGECOMMANDCREATEDSTATUSPORTSNAMES 34d532e76913a02c"/bin/bash"3minutesagoExited(0)12secondsagocentos-gpu2 d16c2db2bf2ea02c"/bin/bash"2hoursagoExited(0)19minutesagocentos-gpu 370671db8df13afd"/bin/bash"19hoursagoExited(137)3hoursagocentos-dronemap [root@localhostcentos-gpu]#nvidia-dockerstart34d5 34d5 [root@localhostcentos-gpu]#nvidia-dockercp/root/nvidia/cuda-repo-rhel7-9.1.85-1.x86_64.rpm34d532e76913:/root [root@localhostcentos-gpu]#nvidia-dockerexec-ti34d5/bin/bash [root@34d532e76913/]#cd [root@34d532e76913~]#ls anaconda-ks.cfgcuda-repo-rhel7-9.1.85-1.x86_64.rpm [root@34d532e76913~]#rpm-ivhcuda-repo-rhel7-9.1.85-1.x86_64.rpm warning:cuda-repo-rhel7-9.1.85-1.x86_64.rpm:HeaderV3RSA/SHA512Signature,keyID7fa2af80:NOKEY Preparing...#################################[100%] Updating/installing... 1:cuda-repo-rhel7-9.1.85-1#################################[100%] [root@34d532e76913~]#yuminstallcuda-*9-0*
这里需要注意的是类似于34d532e76913这样的编号,是docker自动生成的,运行的时候需要修改一下。
到目前基本上cuda的环境就搭建好了。
TensorFlow
把下载的cudnn包用dockercp复制到docker中,解压下来,将里面的lib64路径添加到/etc/ld.so.conf.d/nvidia.conf中,运行ldconfig,就ok了。
上面的环境好了以后,再安装python等等软件,这就不说了。之后tensorflow的一些例子就可以在docker里运行了。当然你得安装gpu版本的,才能发挥显卡的威力。
另外也可以不必要这么麻烦,有已经制作好的镜像可以拿来用,可以参考:https://hub.docker.com/r/tensorflow/tensorflow/
其他
另外也有现成的cuda镜像可以用,参考:https://hub.docker.com/r/nvidia/cuda/
直接使用命令:dockerpullnvidia/cuda就可以下载镜像了,只不过这是ubuntu版本的,和我们的生成环境不符,如果要其他版本的可以参考上面的例子。
最后
这一段时间没有写什么东西,另外之前的关于图形绘图的东西,一直没扔,已经有很多东西可以和大家分享了,只不过时间很少,还没来得及整理。等有空了就能听着音乐在屏幕前磨洋工了,KeKe~。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。