# 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 CENTOS_VERSION=8 FROM centos:${CENTOS_VERSION} as base # Intel Optimizations specific Envs ENV KMP_AFFINITY='granularity=fine,verbose,compact,1,0' \ KMP_BLOCKTIME=1 \ KMP_SETTINGS=1 # See http://bugs.python.org/issue19846 ENV LANG C.UTF-8 ARG PYTHON=python3 RUN yum update -y && yum install -y \ ${PYTHON} \ ${PYTHON}-pip \ which && \ yum clean all RUN ${PYTHON} -m pip --no-cache-dir install --upgrade \ pip \ setuptools # Some TF tools expect a "python" binary RUN ln -sf $(which ${PYTHON}) /usr/local/bin/python && \ ln -sf $(which ${PYTHON}) /usr/local/bin/python3 && \ ln -sf $(which ${PYTHON}) /usr/bin/python # On CentOS 7, yum needs to run with Python2.7 RUN sed -i 's#/usr/bin/python#/usr/bin/python2#g' /usr/bin/yum /usr/libexec/urlgrabber-ext-down # 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 python3 -m pip install --no-cache-dir ${TF_PACKAGE}${TF_PACKAGE_VERSION:+==${TF_PACKAGE_VERSION}} # install mpich, openssh for MPI to communicate between containers RUN yum update -y && yum install -y \ mpich \ mpich-devel \ openssh \ openssh-server \ redhat-rpm-config \ which && \ yum clean all ENV PATH="/usr/lib64/mpich/bin:${PATH}" # Create a wrapper for MPICH to allow running as root by default RUN mv -f $(which mpirun) /usr/bin/mpirun.real && \ echo '#!/bin/bash' > /usr/bin/mpirun && \ echo 'mpirun.real "$@"' >> /usr/bin/mpirun && \ chmod a+x /usr/bin/mpirun # Set up SSH RUN mkdir -p /var/run/sshd # Allow OpenSSH to talk to containers without asking for confirmation RUN cat /etc/ssh/sshd_config | grep -v StrictHostKeyChecking > /etc/ssh/sshd_config.new && \ echo " StrictHostKeyChecking no" >> /etc/ssh/sshd_config.new && \ mv -f /etc/ssh/sshd_config.new /etc/ssh/sshd_config # Install Horovod ARG HOROVOD_WITHOUT_PYTORCH=1 ARG HOROVOD_WITHOUT_MXNET=1 ARG HOROVOD_WITH_TENSORFLOW=1 ARG HOROVOD_VERSION=v0.21.1 ENV LC_ALL=en_US.UTF-8 ENV LC_CTYPE=en_US.UTF-8 RUN yum update -y && \ yum install -y centos-release-scl && \ yum install -y \ devtoolset-8 \ devtoolset-8-make \ llvm-toolset-7-cmake \ ${PYTHON}-devel \ sclo-git25 && \ yum clean all ENV PATH=/opt/rh/devtoolset-8/root/usr/bin:/opt/rh/sclo-git25/root/usr/bin:/opt/rh/llvm-toolset-7/root/usr/bin:${PATH} RUN ${PYTHON} -m pip install git+https://github.com/horovod/horovod.git@${HOROVOD_VERSION} COPY bashrc /etc/bash.bashrc RUN chmod a+rwx /etc/bash.bashrc RUN ${PYTHON} -m pip install --no-cache-dir jupyter matplotlib # Pin ipykernel and nbformat; see https://github.com/ipython/ipykernel/issues/422 RUN ${PYTHON} -m pip install --no-cache-dir jupyter_http_over_ws ipykernel==5.1.1 nbformat==4.4.0 RUN jupyter serverextension enable --py jupyter_http_over_ws RUN mkdir -p /tf/ && chmod -R a+rwx /tf/ RUN mkdir /.local && chmod a+rwx /.local 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"]