Last active
January 5, 2017 21:04
-
-
Save madratman/00ad129c7ec7bd274cff26cf4ae283e7 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
FROM ubuntu:14.04 | |
LABEL maintainer "NVIDIA CORPORATION <[email protected]>" | |
LABEL com.nvidia.volumes.needed="nvidia_driver" | |
RUN NVIDIA_GPGKEY_SUM=d1be581509378368edeec8c1eb2958702feedf3bc3d17011adbf24efacce4ab5 && \ | |
NVIDIA_GPGKEY_FPR=ae09fe4bbd223a84b2ccfce3f60f4b3d7fa2af80 && \ | |
apt-key adv --fetch-keys http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1404/x86_64/7fa2af80.pub && \ | |
apt-key adv --export --no-emit-version -a $NVIDIA_GPGKEY_FPR | tail -n +2 > cudasign.pub && \ | |
echo "$NVIDIA_GPGKEY_SUM cudasign.pub" | sha256sum -c --strict - && rm cudasign.pub && \ | |
echo "deb http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1404/x86_64 /" > /etc/apt/sources.list.d/cuda.list | |
ENV CUDA_VERSION 8.0 | |
LABEL com.nvidia.cuda.version="8.0" | |
ENV CUDA_PKG_VERSION 8-0=8.0.44-1 | |
RUN apt-get update && apt-get install -y --no-install-recommends \ | |
cuda-nvrtc-$CUDA_PKG_VERSION \ | |
cuda-nvgraph-$CUDA_PKG_VERSION \ | |
cuda-cusolver-$CUDA_PKG_VERSION \ | |
cuda-cublas-$CUDA_PKG_VERSION \ | |
cuda-cufft-$CUDA_PKG_VERSION \ | |
cuda-curand-$CUDA_PKG_VERSION \ | |
cuda-cusparse-$CUDA_PKG_VERSION \ | |
cuda-npp-$CUDA_PKG_VERSION \ | |
cuda-cudart-$CUDA_PKG_VERSION && \ | |
ln -s cuda-$CUDA_VERSION /usr/local/cuda && \ | |
rm -rf /var/lib/apt/lists/* | |
RUN echo "/usr/local/cuda/lib64" >> /etc/ld.so.conf.d/cuda.conf && \ | |
ldconfig | |
RUN echo "/usr/local/nvidia/lib" >> /etc/ld.so.conf.d/nvidia.conf && \ | |
echo "/usr/local/nvidia/lib64" >> /etc/ld.so.conf.d/nvidia.conf | |
ENV PATH /usr/local/nvidia/bin:/usr/local/cuda/bin:${PATH} | |
ENV LD_LIBRARY_PATH /usr/local/nvidia/lib:/usr/local/nvidia/lib64 | |
RUN apt-get update && apt-get install -y --no-install-recommends \ | |
cuda-core-$CUDA_PKG_VERSION \ | |
cuda-misc-headers-$CUDA_PKG_VERSION \ | |
cuda-command-line-tools-$CUDA_PKG_VERSION \ | |
cuda-nvrtc-dev-$CUDA_PKG_VERSION \ | |
cuda-nvml-dev-$CUDA_PKG_VERSION \ | |
cuda-nvgraph-dev-$CUDA_PKG_VERSION \ | |
cuda-cusolver-dev-$CUDA_PKG_VERSION \ | |
cuda-cublas-dev-$CUDA_PKG_VERSION \ | |
cuda-cufft-dev-$CUDA_PKG_VERSION \ | |
cuda-curand-dev-$CUDA_PKG_VERSION \ | |
cuda-cusparse-dev-$CUDA_PKG_VERSION \ | |
cuda-npp-dev-$CUDA_PKG_VERSION \ | |
cuda-cudart-dev-$CUDA_PKG_VERSION \ | |
cuda-driver-dev-$CUDA_PKG_VERSION && \ | |
rm -rf /var/lib/apt/lists/* | |
ENV LIBRARY_PATH /usr/local/cuda/lib64/stubs:${LIBRARY_PATH} | |
RUN apt-get update && apt-get install -y \ | |
curl && \ | |
rm -rf /var/lib/apt/lists/* | |
ENV CUDNN_VERSION 5 | |
LABEL com.nvidia.cudnn.version="5" | |
RUN CUDNN_DOWNLOAD_SUM=a87cb2df2e5e7cc0a05e266734e679ee1a2fadad6f06af82a76ed81a23b102c8 && \ | |
curl -fsSL http://developer.download.nvidia.com/compute/redist/cudnn/v5.1/cudnn-8.0-linux-x64-v5.1.tgz -O && \ | |
echo "$CUDNN_DOWNLOAD_SUM cudnn-8.0-linux-x64-v5.1.tgz" | sha256sum -c --strict - && \ | |
tar -xzf cudnn-8.0-linux-x64-v5.1.tgz -C /usr/local && \ | |
rm cudnn-8.0-linux-x64-v5.1.tgz && \ | |
ldconfig | |
ARG THEANO_VERSION=rel-0.8.2 | |
ARG TENSORFLOW_VERSION=0.8.0 | |
ARG TENSORFLOW_ARCH=gpu | |
ARG KERAS_VERSION=1.0.3 | |
ARG LASAGNE_VERSION=v0.1 | |
ARG TORCH_VERSION=latest | |
ARG CAFFE_VERSION=master | |
#RUN echo -e "\n**********************\nNVIDIA Driver Version\n**********************\n" && \ | |
# cat /proc/driver/nvidia/version && \ | |
# echo -e "\n**********************\nCUDA Version\n**********************\n" && \ | |
# nvcc -V && \ | |
# echo -e "\n\nBuilding your Deep Learning Docker Image...\n" | |
# Install some dependencies | |
RUN apt-get update && apt-get install -y \ | |
bc \ | |
build-essential \ | |
cmake \ | |
curl \ | |
g++ \ | |
gfortran \ | |
git \ | |
libffi-dev \ | |
libfreetype6-dev \ | |
libhdf5-dev \ | |
libjpeg-dev \ | |
liblcms2-dev \ | |
libopenblas-dev \ | |
liblapack-dev \ | |
libopenjpeg2 \ | |
libpng12-dev \ | |
libssl-dev \ | |
libtiff5-dev \ | |
libwebp-dev \ | |
libzmq3-dev \ | |
nano \ | |
pkg-config \ | |
python-dev \ | |
software-properties-common \ | |
unzip \ | |
vim \ | |
wget \ | |
zlib1g-dev \ | |
&& \ | |
apt-get clean && \ | |
apt-get autoremove && \ | |
rm -rf /var/lib/apt/lists/* && \ | |
# Link BLAS library to use OpenBLAS using the alternatives mechanism (https://www.scipy.org/scipylib/building/linux.html#debian-ubuntu) | |
update-alternatives --set libblas.so.3 /usr/lib/openblas-base/libblas.so.3 | |
# Install | |
RUN curl -O https://bootstrap.pypa.io/get-pip.py && \ | |
python get-pip.py && \ | |
rm get-pip.py | |
# Add SNI support to Python | |
RUN pip --no-cache-dir install \ | |
pyopenssl \ | |
ndg-httpsclient \ | |
pyasn1 | |
# Install useful Python packages using apt-get to avoid version incompatibilities with Tensorflow binary | |
# especially numpy, scipy, skimage and sklearn (see https://github.com/tensorflow/tensorflow/issues/2034) | |
RUN apt-get update && apt-get install -y \ | |
python-numpy \ | |
python-scipy \ | |
python-nose \ | |
python-h5py \ | |
python-skimage \ | |
python-matplotlib \ | |
python-pandas \ | |
python-sklearn \ | |
python-sympy \ | |
&& \ | |
apt-get clean && \ | |
apt-get autoremove && \ | |
rm -rf /var/lib/apt/lists/* | |
# Install other useful Python packages using pip | |
RUN pip --no-cache-dir install --upgrade ipython && \ | |
pip --no-cache-dir install \ | |
Cython \ | |
ipykernel \ | |
jupyter \ | |
path.py \ | |
Pillow \ | |
pygments \ | |
six \ | |
sphinx \ | |
wheel \ | |
zmq \ | |
&& \ | |
python -m ipykernel.kernelspec | |
# Install opencv | |
RUN pip --no-cache-dir install opencv-python | |
# Install TensorFlow | |
RUN pip --no-cache-dir install \ | |
https://storage.googleapis.com/tensorflow/linux/${TENSORFLOW_ARCH}/tensorflow-${TENSORFLOW_VERSION}-cp27-none-linux_x86_64.whl | |
# Install dependencies for Caffe | |
RUN apt-get update && apt-get install -y \ | |
libboost-all-dev \ | |
libgflags-dev \ | |
libgoogle-glog-dev \ | |
libhdf5-serial-dev \ | |
libleveldb-dev \ | |
liblmdb-dev \ | |
libopencv-dev \ | |
libprotobuf-dev \ | |
libsnappy-dev \ | |
protobuf-compiler \ | |
&& \ | |
apt-get clean && \ | |
apt-get autoremove && \ | |
rm -rf /var/lib/apt/lists/* | |
# Install Caffe | |
RUN git clone -b ${CAFFE_VERSION} --depth 1 https://github.com/BVLC/caffe.git /root/caffe && \ | |
cd /root/caffe && \ | |
cat python/requirements.txt | xargs -n1 pip install && \ | |
mkdir build && cd build && \ | |
cmake -DUSE_CUDNN=1 -DBLAS=Open .. && \ | |
make -j"$(nproc)" all && \ | |
make install | |
# Set up Caffe environment variables | |
ENV CAFFE_ROOT=/root/caffe | |
ENV PYCAFFE_ROOT=$CAFFE_ROOT/python | |
ENV PYTHONPATH=$PYCAFFE_ROOT:$PYTHONPATH \ | |
PATH=$CAFFE_ROOT/build/tools:$PYCAFFE_ROOT:$PATH | |
RUN echo "$CAFFE_ROOT/build/lib" >> /etc/ld.so.conf.d/caffe.conf && ldconfig | |
# Install Theano and set up Theano config (.theanorc) for CUDA and OpenBLAS | |
RUN pip --no-cache-dir install git+git://github.com/Theano/Theano.git@${THEANO_VERSION} && \ | |
\ | |
echo "[global]\ndevice=gpu\nfloatX=float32\noptimizer_including=cudnn\nmode=FAST_RUN \ | |
\n[lib]\ncnmem=0.95 \ | |
\n[nvcc]\nfastmath=True \ | |
\n[blas]\nldflag = -L/usr/lib/openblas-base -lopenblas \ | |
\n[DebugMode]\ncheck_finite=1" \ | |
> /root/.theanorc | |
# Install Keras | |
RUN pip --no-cache-dir install git+git://github.com/fchollet/keras.git@${KERAS_VERSION} | |
# Install Lasagne | |
RUN pip --no-cache-dir install git+git://github.com/Lasagne/Lasagne.git@${LASAGNE_VERSION} | |
# Install Torch | |
RUN git clone https://github.com/torch/distro.git /root/torch --recursive && \ | |
cd /root/torch && \ | |
bash install-deps && \ | |
yes no | ./install.sh | |
# Export the LUA evironment variables manually | |
ENV LUA_PATH='/root/.luarocks/share/lua/5.1/?.lua;/root/.luarocks/share/lua/5.1/?/init.lua;/root/torch/install/share/lua/5.1/?.lua;/root/torch/install/share/lua/5.1/?/init.lua;./?.lua;/root/torch/install/share/luajit-2.1.0-beta1/?.lua;/usr/local/share/lua/5.1/?.lua;/usr/local/share/lua/5.1/?/init.lua' \ | |
LUA_CPATH='/root/.luarocks/lib/lua/5.1/?.so;/root/torch/install/lib/lua/5.1/?.so;./?.so;/usr/local/lib/lua/5.1/?.so;/usr/local/lib/lua/5.1/loadall.so' \ | |
PATH=/root/torch/install/bin:$PATH \ | |
LD_LIBRARY_PATH=/root/torch/install/lib:$LD_LIBRARY_PATH \ | |
DYLD_LIBRARY_PATH=/root/torch/install/lib:$DYLD_LIBRARY_PATH | |
ENV LUA_CPATH='/root/torch/install/lib/?.so;'$LUA_CPATH | |
# Install the latest versions of nn, cutorch, cunn, cuDNN bindings and iTorch | |
RUN luarocks install nn && \ | |
luarocks install cutorch && \ | |
luarocks install cunn && \ | |
\ | |
cd /root && git clone https://github.com/soumith/cudnn.torch.git && cd cudnn.torch && \ | |
git checkout R4 && \ | |
luarocks make && \ | |
\ | |
cd /root && git clone https://github.com/facebook/iTorch.git && \ | |
cd iTorch && \ | |
luarocks make | |
# Set up notebook config | |
COPY jupyter_notebook_config.py /root/.jupyter/ | |
# Jupyter has issues with being run directly: https://github.com/ipython/ipython/issues/7062 | |
COPY run_jupyter.sh /root/ | |
# Expose Ports for TensorBoard (6006), Ipython (8888) | |
EXPOSE 6006 8888 | |
WORKDIR "/root" | |
CMD ["/bin/bash"] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment