| # Copyright 2019 The TensorFlow Authors. All Rights Reserved. |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| # ============================================================================ |
| # |
| # THIS IS A GENERATED DOCKERFILE. |
| # |
| # This file was assembled from multiple pieces, whose use is documented |
| # throughout. Please refer to the TensorFlow dockerfiles documentation |
| # for more information. |
| |
| ARG UBUNTU_VERSION=18.04 |
| |
| ARG ARCH= |
| ARG CUDA=10.1 |
| FROM nvidia/cuda${ARCH:+-$ARCH}:${CUDA}-base-ubuntu${UBUNTU_VERSION} as base |
| # ARCH and CUDA are specified again because the FROM directive resets ARGs |
| # (but their default value is retained if set previously) |
| ARG ARCH |
| ARG CUDA |
| ARG CUDNN=7.6.4.38-1 |
| ARG CUDNN_MAJOR_VERSION=7 |
| ARG LIB_DIR_PREFIX=x86_64 |
| ARG LIBNVINFER=6.0.1-1 |
| ARG LIBNVINFER_MAJOR_VERSION=6 |
| |
| # Needed for string substitution |
| SHELL ["/bin/bash", "-c"] |
| # Pick up some TF dependencies |
| RUN apt-get update && apt-get install -y --no-install-recommends \ |
| build-essential \ |
| cuda-command-line-tools-${CUDA/./-} \ |
| # There appears to be a regression in libcublas10=10.2.2.89-1 which |
| # prevents cublas from initializing in TF. See |
| # https://github.com/tensorflow/tensorflow/issues/9489#issuecomment-562394257 |
| libcublas10=10.2.1.243-1 \ |
| cuda-nvrtc-${CUDA/./-} \ |
| cuda-cufft-${CUDA/./-} \ |
| cuda-curand-${CUDA/./-} \ |
| cuda-cusolver-${CUDA/./-} \ |
| cuda-cusparse-${CUDA/./-} \ |
| curl \ |
| libcudnn7=${CUDNN}+cuda${CUDA} \ |
| libfreetype6-dev \ |
| libhdf5-serial-dev \ |
| libzmq3-dev \ |
| pkg-config \ |
| software-properties-common \ |
| unzip |
| |
| # Install TensorRT if not building for PowerPC |
| RUN [[ "${ARCH}" = "ppc64le" ]] || { apt-get update && \ |
| apt-get install -y --no-install-recommends libnvinfer${LIBNVINFER_MAJOR_VERSION}=${LIBNVINFER}+cuda${CUDA} \ |
| libnvinfer-plugin${LIBNVINFER_MAJOR_VERSION}=${LIBNVINFER}+cuda${CUDA} \ |
| && apt-get clean \ |
| && rm -rf /var/lib/apt/lists/*; } |
| |
| # For CUDA profiling, TensorFlow requires CUPTI. |
| ENV LD_LIBRARY_PATH /usr/local/cuda/extras/CUPTI/lib64:/usr/local/cuda/lib64:$LD_LIBRARY_PATH |
| |
| # Link the libcuda stub to the location where tensorflow is searching for it and reconfigure |
| # dynamic linker run-time bindings |
| RUN ln -s /usr/local/cuda/lib64/stubs/libcuda.so /usr/local/cuda/lib64/stubs/libcuda.so.1 \ |
| && echo "/usr/local/cuda/lib64/stubs" > /etc/ld.so.conf.d/z-cuda-stubs.conf \ |
| && ldconfig |
| |
| ARG USE_PYTHON_3_NOT_2 |
| ARG _PY_SUFFIX=${USE_PYTHON_3_NOT_2:+3} |
| ARG PYTHON=python${_PY_SUFFIX} |
| ARG PIP=pip${_PY_SUFFIX} |
| |
| # See http://bugs.python.org/issue19846 |
| ENV LANG C.UTF-8 |
| |
| RUN apt-get update && apt-get install -y \ |
| ${PYTHON} \ |
| ${PYTHON}-pip |
| |
| RUN ${PIP} --no-cache-dir install --upgrade \ |
| pip \ |
| setuptools |
| |
| # Some TF tools expect a "python" binary |
| RUN ln -s $(which ${PYTHON}) /usr/local/bin/python |
| |
| # Options: |
| # tensorflow |
| # tensorflow-gpu |
| # tf-nightly |
| # tf-nightly-gpu |
| # Set --build-arg TF_PACKAGE_VERSION=1.11.0rc0 to install a specific version. |
| # Installs the latest version by default. |
| ARG TF_PACKAGE=tensorflow |
| ARG TF_PACKAGE_VERSION= |
| RUN ${PIP} install ${TF_PACKAGE}${TF_PACKAGE_VERSION:+==${TF_PACKAGE_VERSION}} |
| |
| COPY bashrc /etc/bash.bashrc |
| RUN chmod a+rwx /etc/bash.bashrc |
| |
| RUN ${PIP} install jupyter matplotlib |
| # https://github.com/ipython/ipykernel/issues/422 |
| RUN test "${USE_PYTHON_3_NOT_2}" == "1" && ${PIP} install ipykernel==5.1.1 nbformat==4.4.0 || true |
| RUN ${PIP} install jupyter_http_over_ws |
| RUN jupyter serverextension enable --py jupyter_http_over_ws |
| |
| RUN mkdir -p /tf/tensorflow-tutorials && chmod -R a+rwx /tf/ |
| RUN mkdir /.local && chmod a+rwx /.local |
| RUN apt-get install -y --no-install-recommends wget |
| WORKDIR /tf/tensorflow-tutorials |
| RUN wget https://raw.githubusercontent.com/tensorflow/docs/master/site/en/tutorials/keras/classification.ipynb |
| RUN wget https://raw.githubusercontent.com/tensorflow/docs/master/site/en/tutorials/keras/overfit_and_underfit.ipynb |
| RUN wget https://raw.githubusercontent.com/tensorflow/docs/master/site/en/tutorials/keras/regression.ipynb |
| RUN wget https://raw.githubusercontent.com/tensorflow/docs/master/site/en/tutorials/keras/save_and_load.ipynb |
| RUN wget https://raw.githubusercontent.com/tensorflow/docs/master/site/en/tutorials/keras/text_classification.ipynb |
| RUN wget https://raw.githubusercontent.com/tensorflow/docs/master/site/en/tutorials/keras/text_classification_with_hub.ipynb |
| COPY readme-for-jupyter.md README.md |
| RUN apt-get autoremove -y && apt-get remove -y wget |
| WORKDIR /tf |
| EXPOSE 8888 |
| |
| RUN ${PYTHON} -m ipykernel.kernelspec |
| |
| CMD ["bash", "-c", "source /etc/bash.bashrc && jupyter notebook --notebook-dir=/tf --ip 0.0.0.0 --no-browser --allow-root"] |