事情.jpg]"/>
在docker里同时集成cuda,tensorflow和vnc[搞事情.jpg]
看这个标题,就是要在docker里处理视频做计算……
目录
首先,必要的服务器配置说明:
1 从DockerHub下载你需要的cuda和cudnn版本对应的镜像。
2 安装tensorflow1.14和各种python包。
3 安装vnc
TIPS
首先,必要的服务器配置说明:
Ubuntu 18.04
gpu(已经安装好驱动)
docker
接下来是搞事情阶段:
【我曾完美找到了安装好nvidia 的镜像,安装好tensorflow1.14的镜像和安装好vnc的镜像,如果能组合到一起多好多简单啊。。。是我想多了。只能手动一层层盖楼】
1 从DockerHub下载你需要的cuda和cudnn版本对应的镜像。
(当初搞docker就是因为服务器的cuda和cudnn版本各种问题,本来好好的cuda10.0和cudnn7.6.4组合,多好的组合啊!然鹅代码不这么觉得。所以就找cuda10.0.130;cudnn7.6.3.30。)
在dockerHub找到nvidia的仓库,找tag是10.0-cudnn7-runtime-ubuntu16.04 的那个。
docker pull nvidia/cuda:10.0-cudnn7-runtime-ubuntu16.04
2 安装tensorflow1.14和各种python包。
当初找到的tensorflow官方镜像 ,里面有cuda10.0;cudnn7.4.1.5-1,但是只有tensorflow及其依赖包,算了。
docker pull tensorflow/tensorflow:1.14.0-gpu-py3
那么就开始我的手写dockerfile操作了
RUN APT_INSTALL="apt-get install -y --no-install-recommends" && \PIP_INSTALL="python3 -m pip --no-cache-dir install --upgrade" && \rm -rf /var/lib/apt/lists/* \/etc/apt/sources.list.d/cuda.list \/etc/apt/sources.list.d/nvidia-ml.list && \apt-get update && \# ==================================================================
# tools
# ------------------------------------------------------------------DEBIAN_FRONTEND=noninteractive $APT_INSTALL \build-essential \ libsm6 \libxext6 \libxrender-dev \libglib2.0-0 \libssl-dev && \cd /root/cmake && \./bootstrap && \make -j"$(nproc)" install && \
# ==================================================================
# python
# ------------------------------------------------------------------DEBIAN_FRONTEND=noninteractive $APT_INSTALL \software-properties-common \&& \add-apt-repository ppa:deadsnakes/ppa && \apt-get update && \DEBIAN_FRONTEND=noninteractive $APT_INSTALL \python3.6 \python3.6-dev \python3-distutils-extra \python3-venv python3-setuptools \protobuf-compiler python-pil python-lxml python-tk \&& \
# get-pip.py is downloaded
# python3.6 ~/get-pip.py && \ln -s /usr/bin/python3.6 /usr/local/bin/python3 && \ln -s /usr/bin/python3.6 /usr/local/bin/python && \cd /root/ && \tar -zxvf pip-19.3.1.tar.gz && \cd pip-19.3.1 && \python3 setup.py install && \pip install /root/numpy-1.16.5-cp36-cp36m-manylinux1_x86_64.whl && \pip install /root/scipy-1.2.2-cp36-cp36m-manylinux1_x86_64.whl && \pip install /root/opencv_python-4.1.1.26-cp36-cp36m-manylinux1_x86_64.whl && \pip install matplotlib==3.1.1 -i / && \pip install /root/Pillow-6.2.0-cp36-cp36m-manylinux1_x86_64.whl && \pip install /root/Cython-0.29.13-cp36-cp36m-manylinux1_x86_64.whl && \# ==================================================================
# tensorflow
# ------------------------------------------------------------------pip install tensorflow-gpu==1.14.0 -i / && \
# ==================================================================
# config & cleanup
# ------------------------------------------------------------------ldconfig && \apt-get clean && \apt-get autoremove && \rm -rf /var/lib/apt/lists/* /tmp/* /root/*
因为网速的原因,某些包我已经提前手动下载好,等着安装。不然老是build失败,太折磨人。比如cmake,pip,numpy等。
tensorflow的版本也不能随便写,和cuda,cudnn版本有对应关系的,详情见此:
这一段也是我从别人那复制过来,改了又改。如果有人看到原版欢迎留言,因为我忘了复制哪的==
3 安装vnc
仍旧先贴上别人的成品,网上有很多创建好的镜像,我就挑了一个dockerfile看起来很简单的,方便盖楼。
打开链接就能看到dockerfile的内容啦,这里就不贴出来了,根据自己的情况删删改改就能直接用,而且是一次成功!为大佬的dockerfile点赞。
END
TIPS
docker build时遇到的问题
问题背景:在dockerfile中修改了apt更新的源为aliyun,第一次build的时候没报这方面的问题,但是后续修改dockerfile再build的时候就开始报错“Temporary failure resolving 'mirrors.aliyun'”。
在dockerfile里改添加nameserver也没用。
经测试,在docker build后添加--network=host即可,参考自:。
有知道具体原因的大佬欢迎留言,还望不吝赐教。
用docker run启动的时候,记得要加--runtime=nvidia,不然可能会识别不到gpu,导致报错。
写出来怎么这么短,唉……
等我整理一下把所有东西打个包放GitHub供起来。
更多推荐
在docker里同时集成cuda,tensorflow和vnc[搞事情.jpg]
发布评论