153 lines (126 with data), 4.3 kB
FROM nvidia/cuda:8.0-cudnn5-devel-ubuntu14.04
MAINTAINER Fernando Andreotti <fernando.andreotti@eng.ox.ac.uk>
# Versions used for some packages
ARG CONDA_VERSION=4.3.1
ARG CONDA_ENV
ARG TENSORFLOW_VERSION=1.4*
ARG KERAS_VERSION=2.0.9
ARG PYTHON_VERSION=3.5
ENTRYPOINT ["/bin/bash", "-c" ]
USER root
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
ENV DEBIAN_FRONTEND noninteractive
ENV CONDA_ENV_PATH /opt/miniconda
ENV MYCONDA_ENV "deeplearn"
ENV CONDA_ACTIVATE "source $CONDA_ENV_PATH/bin/activate $MYCONDA_ENV"
# install essentials
RUN apt-get update --fix-missing -qq \
&& apt-get install --no-install-recommends -y \
autoconf \
automake \
bc \
build-essential \
bzip2 \
cmake \
curl \
g++ \
gfortran \
git \
language-pack-en \
libatlas-dev \
libatlas3gf-base \
libcurl4-openssl-dev \
libffi-dev \
libfreetype6-dev \
libglib2.0-0 \
libhdf5-dev \
liblcms2-dev \
libopenblas-dev \
libssl-dev \
libtiff5-dev \
libtool \
libwebp-dev \
libzmq3-dev \
make \
nano \
pkg-config \
software-properties-common \
unzip \
wget \
zlib1g-dev \
qt5-default \
libvtk6-dev \
zlib1g-dev
# Install miniconda to /opt/miniconda
RUN curl -LO http://repo.continuum.io/miniconda/Miniconda-latest-Linux-x86_64.sh
RUN /bin/bash Miniconda-latest-Linux-x86_64.sh -p $CONDA_ENV_PATH -b
RUN rm Miniconda-latest-Linux-x86_64.sh
ENV PATH=$CONDA_ENV_PATH/bin:${PATH}
RUN conda update --quiet --yes conda
ENV PATH ${CONDA_ENV_PATH}/bin:$PATH
# Creating Anaconda environment
RUN conda create -y --name $MYCONDA_ENV python=${PYTHON_VERSION}
# Install Python 3 packages
RUN conda install -c conda-forge -y -n $MYCONDA_ENV\
'beautifulsoup4=4.5*' \
'graphviz=2.38.0' \
'hdf5=1.8.17' \
'h5py=2.7*' \
'ipython=5.1*' \
'ipykernel=4.5*' \
'ipywidgets=5.2*' \
'jupyter=1.0*' \
'lxml=3.8*' \
'matplotlib=2.0*' \
'notebook=4.3*' \
'numpy=1.13*' \
'pandas=0.20*' \
'pillow=4.2*' \
'pip=9.0*' \
'pydotplus=2.0.2' \
'python=3.5*' \
'scipy=0.19*' \
'scikit-learn=0.19*' \
'scikit-image=0.13*' \
'setuptools=36.3*' \
'six=1.10*' \
'sphinx=1.5*' \
'spyder=3.2*' && \
conda clean -tipsy
# Some further python libraries
#RUN conda install -c conda-forge -n $MYCONDA_ENV r-r.utils r-lme4 r-nlme
RUN conda install -c glemaitre -n $MYCONDA_ENV imbalanced-learn
# Install TensorFlow
#RUN conda install -c conda-forge -n $MYCONDA_ENV tensorflow=${TENSORFLOW_VERSION}
RUN conda install -c conda-forge -n $MYCONDA_ENV tensorflow-gpu=${TENSORFLOW_VERSION}
# Install Keras
ENV KERAS_BACKEND=tensorflow
RUN conda install -c conda-forge -n $MYCONDA_ENV keras=${KERAS_VERSION}
RUN rm /bin/sh && ln -s /bin/bash /bin/sh
RUN conda info --envs
RUN sed -i 's/theano/tensorflow/g' ${CONDA_ENV_PATH}/envs/${MYCONDA_ENV}/etc/conda/activate.d/keras_activate.sh # make tensorflow default
RUN $CONDA_ACTIVATE && pip install --upgrade pip && \
pip install git+git://github.com/stared/keras-sequential-ascii.git \
pydot3
###########################
## Finishing up details ###
###########################
ENV HOME /sharedfolder
WORKDIR /sharedfolder
# Add a notebook profile.
RUN mkdir -p -m 700 /sharedfolder/.jupyter/ && \
echo "c.NotebookApp.ip = '*'" >> /sharedfolder/.jupyter/jupyter_notebook_config.py \
echo "c.NotebookApp.port = 8888" >> /sharedfolder/.jupyter/jupyter_notebook_config.py \
echo "c.NotebookApp.open_browser = False" >> /sharedfolder/.jupyter/jupyter_notebook_config.py \
echo "c.MultiKernelManager.default_kernel_name = 'python3'" >> /sharedfolder/.jupyter/jupyter_notebook_config.py \
echo "c.NotebookApp.allow_root = True" >> /sharedfolder/.jupyter/jupyter_notebook_config.py \
echo "c.NotebookApp.password_required = False" >> /sharedfolder/.jupyter/jupyter_notebook_config.py \
echo "c.NotebookApp.token = ''" >> /sharedfolder/.jupyter/jupyter_notebook_config.py
# Expose Ports for TensorBoard (6006), Ipython (8888)
EXPOSE 6006 8888
CMD ["source activate deeplearn && /bin/bash"]