Skip to content
This repository has been archived by the owner on Aug 5, 2022. It is now read-only.

Commit

Permalink
Merge Release_1.1.2
Browse files Browse the repository at this point in the history
  • Loading branch information
daisyden committed Sep 28, 2018
2 parents a3d5b02 + 8d7fb23 commit 3c14534
Show file tree
Hide file tree
Showing 194 changed files with 281,373 additions and 57,135 deletions.
11 changes: 8 additions & 3 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ endif()
project(Caffe C CXX)

# ---[ Caffe version
set(CAFFE_TARGET_VERSION "1.1.0" CACHE STRING "Caffe logical version")
set(CAFFE_TARGET_SOVERSION "1.1.0" CACHE STRING "Caffe soname version")
set(CAFFE_TARGET_VERSION "1.1.2" CACHE STRING "Caffe logical version")
set(CAFFE_TARGET_SOVERSION "1.1.2" CACHE STRING "Caffe soname version")
add_definitions(-DCAFFE_VERSION=${CAFFE_TARGET_VERSION})

# ---[ Using cmake scripts and modules
Expand Down Expand Up @@ -47,6 +47,7 @@ caffe_option(PERFORMANCE_MONITORING "Build Caffe with PERFORMANCE_MONITORING " O
caffe_option(CODE_COVERAGE "Build with code coverage instrumentation" OFF)
caffe_option(CO_SIM "Build readonly cpu blob data/diff pycaffe interface" OFF)
caffe_option(USE_MLSL "Build Caffe with Intel(r) Machine Learning Scaling Library for multinode training" ON)
caffe_option(ICC_STATIC_BUILD "Build Intel Caffe static link with Intel compiler" OFF)

# ---[ Dependencies
include(cmake/MKLDNN.cmake)
Expand Down Expand Up @@ -93,7 +94,11 @@ if(UNIX OR APPLE)
# shows that it generates correct PIE anyway if only -pie is provided.
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fstack-protector -wd2196")
# Auto enable SGD Fusion if use intel compiler
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DENABLE_SGD_FUSION")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DENABLE_SGD_FUSION -DENABLE_NMS_OPTIMIZATION")
# ICC static build
if(ICC_STATIC_BUILD)
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -static-intel")
endif()
endif()

# Generic flags.
Expand Down
10 changes: 7 additions & 3 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ LIB_BUILD_DIR := $(BUILD_DIR)/lib
STATIC_NAME := $(LIB_BUILD_DIR)/lib$(LIBRARY_NAME).a
DYNAMIC_VERSION_MAJOR := 1
DYNAMIC_VERSION_MINOR := 1
DYNAMIC_VERSION_REVISION := 0
DYNAMIC_VERSION_REVISION := 2
DYNAMIC_NAME_SHORT := lib$(LIBRARY_NAME).so
#DYNAMIC_SONAME_SHORT := $(DYNAMIC_NAME_SHORT).$(DYNAMIC_VERSION_MAJOR)
DYNAMIC_VERSIONED_NAME_SHORT := $(DYNAMIC_NAME_SHORT).$(DYNAMIC_VERSION_MAJOR).$(DYNAMIC_VERSION_MINOR).$(DYNAMIC_VERSION_REVISION)
Expand Down Expand Up @@ -389,7 +389,11 @@ endif
ifneq (,$(findstring icpc,$(CXX)))
CXX_HARDENING_FLAGS += -fstack-protector -wd2196
#Enable SGD FUSION if use intel compiler
COMMON_FLAGS += -DENABLE_SGD_FUSION
COMMON_FLAGS += -DENABLE_SGD_FUSION -DENABLE_NMS_OPTIMIZATION
#Intel compiler static build flag
ifeq ($(ICC_STATIC_BUILD), 1)
LDFLAGS += -static-intel
endif

else ifneq (,$(findstring clang++,$(CXX)))
CXX_HARDENING_FLAGS += -fPIE -fstack-protector
Expand Down Expand Up @@ -447,7 +451,7 @@ ifeq ($(DEBUG), 1)
COMMON_FLAGS += -DDEBUG -g -O0
NVCCFLAGS += -G
else ifneq (,$(findstring icpc,$(CXX)))
COMMON_FLAGS += -DNDEBUG -O3 -xCORE-AVX2 -no-prec-div -fp-model fast=2
COMMON_FLAGS += -DNDEBUG -O3 -xHost -no-prec-div -fp-model fast=2
else
COMMON_FLAGS += -DNDEBUG -O3
endif
Expand Down
5 changes: 5 additions & 0 deletions Makefile.config.example
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,8 @@ USE_MKLDNN_AS_DEFAULT_ENGINE := 1
# To customize your choice of compiler, uncomment and set the following.
# N.B. the default for Linux is g++ and the default for OSX is clang++
# CUSTOM_CXX := g++
# If you use Intel compiler, you can choose uncomment following to enable static build
# ICC_STATIC_BUILD := 1

# If you use Intel compiler define a path to newer boost if not used
# already.
Expand All @@ -85,6 +87,9 @@ DISABLE_CONV_RELU_FUSION:= 0
# Use Bn + ReLU fusion to boost inference
DISABLE_BN_RELU_FUSION := 0

# Use Conv + Concat fusion to boost inference.
ENABLE_CONCAT_FUSION := 0

# Use Conv + Eltwise + Relu layer fusion to boost inference.
DISABLE_CONV_SUM_FUSION := 0

Expand Down
4 changes: 2 additions & 2 deletions Makefile.dlcp
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
CAFFE_ROOTDIR := $(shell pwd)
DLCP_IDEEPDIR := $(CAFFE_ROOTDIR)/external/ideep
DLCP_ROOTDIR := $(DLCP_IDEEPDIR)/ideep/dlcp
DLCP_ROOTDIR := $(DLCP_IDEEPDIR)/dlcp
DLCP_INCLDIR := $(DLCP_ROOTDIR)/include
DLCP_LIBDIR := $(DLCP_ROOTDIR)/lib
IDEEP_GITHUB := https://github.com/intel/ideep.git
Expand All @@ -9,7 +9,7 @@ DLCP_CXX := $(CXX)
ifeq ("$(wildcard $(DLCP_INCLDIR)/dl_compression.h)", "")
dlcp_download:
rm -rf $(DLCP_IDEEPDIR)
git clone $(IDEEP_GITHUB) -b dlcp $(DLCP_IDEEPDIR)
git clone $(IDEEP_GITHUB) -b ideep4py $(DLCP_IDEEPDIR)

dlcp_build: dlcp_download
make -C $(DLCP_ROOTDIR) -j$(shell cat /proc/cpuinfo |grep 'processor'|wc -l)
Expand Down
6 changes: 6 additions & 0 deletions Makefile.mkldnn
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,12 @@ ifneq (,$(findstring ccache,$(CC)))
endif

MKLDNN_GITHUB := https://github.com/01org/mkl-dnn.git
# Enable MKLDNN intel compiler static build
ifneq (,$(findstring icpc,$(MKLDNN_CXX)))
ifeq ($(ICC_STATIC_BUILD), 1)
MKLDNN_CMAKE_FLAGS += $(MKLDNN_SRCDIR) -DCMAKE_INSTALL_PREFIX=$(MKLDNN_INSTALLDIR) -DMKLROOT=${MKL_ROOTDIR} -B$(MKLDNN_BUILDDIR) -DCMAKE_CXX_COMPILER="$(MKLDNN_CXX)" -DCMAKE_C_COMPILER="$(MKLDNN_CC)" -DCMAKE_SHARED_LINKER_FLAGS="$(CMAKE_SHARED_LINKER_FLAGS) -static-intel"
endif
endif
MKLDNN_CMAKE_FLAGS += $(MKLDNN_SRCDIR) -DCMAKE_INSTALL_PREFIX=$(MKLDNN_INSTALLDIR) -DMKLROOT=${MKL_ROOTDIR} -B$(MKLDNN_BUILDDIR) -DCMAKE_CXX_COMPILER="$(MKLDNN_CXX)" -DCMAKE_C_COMPILER="$(MKLDNN_CC)"

# Disable MKLDNN download by customized setting
Expand Down
6 changes: 3 additions & 3 deletions cmake/DLCP.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -5,20 +5,20 @@ function(Download_DLCP)
elseif(HAS_ICPC)
set(DLCP_CXX "icpc" PARENT_SCOPE)
else()
message(WARNING "weight grad compression is disabled because intel compiler is not found")
message("weight grad compression is disabled because intel compiler is not found")
return()
endif()

set(EXTERNAL_DIR ${CMAKE_SOURCE_DIR}/external)
set(DLCP_IDEEPDIR ${EXTERNAL_DIR}/ideep)
set(DLCP_ROOTDIR ${DLCP_IDEEPDIR}/ideep/dlcp)
set(DLCP_ROOTDIR ${DLCP_IDEEPDIR}/dlcp)
set(DLCP_INCLDIR "${DLCP_ROOTDIR}/include" PARENT_SCOPE)
set(DLCP_LIBDIR ${DLCP_ROOTDIR}/lib PARENT_SCOPE)

# Download dl compression lib source code if it doesn't exist
if (NOT EXISTS ${DLCP_INCLDIR}/dl_compression.h)
execute_process(COMMAND rm -rf ${DLCP_IDEEPDIR})
execute_process(COMMAND git clone https://github.com/intel/ideep.git -b dlcp ${DLCP_IDEEPDIR})
execute_process(COMMAND git clone https://github.com/intel/ideep.git -b ideep4py ${DLCP_IDEEPDIR})
endif()

add_custom_target(DLCP_Build ALL
Expand Down
3 changes: 3 additions & 0 deletions cmake/Dependencies.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,7 @@ if(USE_MLSL)
add_definitions("-DFOUNDED_MLSL_ROOT=${MLSL_ROOT}")
include_directories(SYSTEM "${MLSL_ROOT}/intel64/include")
link_directories(SYSTEM "${MLSL_ROOT}/intel64/lib")
set(CMAKE_INSTALL_RPATH ${CMAKE_INSTALL_RPATH}:${MLSL_ROOT}/intel64/lib/)
list(APPEND Caffe_LINKER_LIBS mlsl)

if(CAFFE_MLSL_SHUFFLE)
Expand All @@ -151,6 +152,7 @@ if(USE_MLSL)
message(STATUS "Found DLCP: ${DLCPROOT_DIR}")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DENABLE_WEIGHT_GRAD_COMPRESSION")
list(APPEND Caffe_LINKER_LIBS "${DLCPROOT_LIB_DIR}/libdlcomp.so")
set(CMAKE_INSTALL_RPATH ${CMAKE_INSTALL_RPATH}:${DLCP_LIBDIR})
include_directories(SYSTEM ${DLCP_INCLUDE_DIR})
else()
message(STATUS "DLCP not found. DLCP_INCLUDE_DIR = ${DLCPROOT_INCLUDE_DIR} DLCP_LIB_DIR = ${DLCPROOT_LIB_DIR}")
Expand All @@ -162,6 +164,7 @@ if(USE_MLSL)
if(DLCP_CXX)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DENABLE_WEIGHT_GRAD_COMPRESSION")
list(APPEND Caffe_LINKER_LIBS "${DLCP_LIBDIR}/libdlcomp.so")
set(CMAKE_INSTALL_RPATH ${CMAKE_INSTALL_RPATH}:${DLCP_LIBDIR})
include_directories(SYSTEM ${DLCP_INCLDIR})
endif()
endif()
Expand Down
12 changes: 9 additions & 3 deletions cmake/MKLDNN.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,12 @@ function(Download_MKLDNN)
set(MKLDNN_SOURCE_DIR ${MKLDNN_DIR}/src)
set(MKLDNN_BUILD_DIR ${MKLDNN_DIR}/build)
set(MKLDNN_INSTALL_DIR ${MKLDNN_DIR}/install CACHE PATH "Installation path of MKLDNN")
# Enable MKLDNN intel compiler static build
if(${CMAKE_CXX_COMPILER_ID} STREQUAL "Intel" )
if(ICC_STATIC_BUILD)
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -static-intel")
endif()
endif()
execute_process(COMMAND cat mkldnn.commit
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
OUTPUT_VARIABLE MKLDNN_COMMIT)
Expand All @@ -18,13 +24,13 @@ function(Download_MKLDNN)

ExternalProject_add(MKLDNN_Build
SOURCE_DIR ${MKLDNN_SOURCE_DIR}
CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DCMAKE_INSTALL_PREFIX=${MKLDNN_INSTALL_DIR} -DMKLROOT=${MKL_ROOT_DIR}
CMAKE_ARGS -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE} -DCMAKE_INSTALL_PREFIX=${MKLDNN_INSTALL_DIR} -DMKLROOT=${MKL_ROOT_DIR} -DCMAKE_SHARED_LINKER_FLAGS=${CMAKE_SHARED_LINKER_FLAGS}
#--Download step
GIT_REPOSITORY https://github.com/01org/mkl-dnn.git
GIT_TAG ${MKLDNN_COMMIT}
GIT_TAG ${MKLDNN_COMMIT}
#--Build step
BINARY_DIR ${MKLDNN_BUILD_DIR}
BUILD_COMMAND cmake ${MKLDNN_SOURCE_DIR}
BUILD_COMMAND cmake ${MKLDNN_SOURCE_DIR}
#--Install step
INSTALL_DIR ${MKLDNN_INSTALL_DIR}
INSTALL_COMMAND make install -j${NCORE}
Expand Down
12 changes: 5 additions & 7 deletions cmake/Misc.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,11 @@ if(DISABLE_BN_RELU_FUSION)
add_definitions("-DDISABLE_BN_RELU_FUSION")
endif()

if(ENABLE_CONCAT_FUSION)
message(STATUS "conv/concat fusion is enabled!")
add_definitions("-DENABLE_CONCAT_FUSION")
endif()

if(DISABLE_CONV_SUM_FUSION)
message(STATUS "conv/eltwise/relu fusion is disabled!")
add_definitions("-DDISABLE_CONV_SUM_FUSION")
Expand Down Expand Up @@ -71,10 +76,3 @@ if(UNIX OR APPLE)
COMMENT "Adding symlink: <caffe_root>/build -> ${PROJECT_BINARY_DIR}" )
endif()

# ---[ Set debug postfix
set(Caffe_DEBUG_POSTFIX "-d")

set(Caffe_POSTFIX "")
if(CMAKE_BUILD_TYPE MATCHES "Debug")
set(Caffe_POSTFIX ${Caffe_DEBUG_POSTFIX})
endif()
3 changes: 3 additions & 0 deletions cmake/Summary.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,9 @@ function(caffe_print_configuration_summary)
caffe_status(" Git : ${Caffe_GIT_VERSION}")
caffe_status(" System : ${CMAKE_SYSTEM_NAME}")
caffe_status(" C++ compiler : ${CMAKE_CXX_COMPILER}")
if(CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
caffe_status(" ICC_STATIC_BUILD : ${ICC_STATIC_BUILD}")
endif()
caffe_status(" Release CXX flags : ${__flags_rel}")
caffe_status(" Debug CXX flags : ${__flags_deb}")
caffe_status(" Build type : ${CMAKE_BUILD_TYPE}")
Expand Down
1 change: 0 additions & 1 deletion cmake/Targets.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -108,7 +108,6 @@ endfunction()
# caffe_default_properties(<target>)
function(caffe_default_properties target)
set_target_properties(${target} PROPERTIES
DEBUG_POSTFIX ${Caffe_DEBUG_POSTFIX}
ARCHIVE_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/lib"
LIBRARY_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/lib"
RUNTIME_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/bin")
Expand Down
2 changes: 1 addition & 1 deletion docker/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ docker run -ti caffe:cpu caffe --version
```
which should show a message like:
```
caffe version 1.1.0
caffe version 1.1.2
```

One can also build and run the Caffe tests in the image using:
Expand Down
62 changes: 41 additions & 21 deletions docker/standalone/cpu-centos/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -4,20 +4,28 @@ MAINTAINER [email protected]
#ENV http_proxy proxy:port
#ENV https_proxy proxy:port

RUN rpm -iUvh http://download.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-10.noarch.rpm

RUN yum upgrade -y

RUN yum install -y \
RUN rpm -iUvh https://dl.fedoraproject.org/pub/epel/7/x86_64/Packages/e/epel-release-7-11.noarch.rpm && \
yum upgrade -y && \
yum install -y \
bzip2 \
numactl \
redhat-rpm-config \
tar \
findutils \
make \
gcc-c++ \
cmake \
git \
vim \
wget \
ssh \
openssh.x86_64 \
openssh-server.x86_64 \
openssh-clients.x86_64 \
initscripts \
net-tools \
ufw \
iptables \
atlas-devel \
boost-devel \
gflags-devel \
Expand All @@ -36,24 +44,36 @@ RUN yum install -y \
python-pip \
python-scipy \
gcc-gfortran \
libjpeg-turbo-devel
libjpeg-turbo-devel && \
yum clean all

RUN yum clean all
ENV CAFFE_ROOT=/opt/caffe
WORKDIR $CAFFE_ROOT
# Install conda and Intel Caffe conda package
WORKDIR /root/
RUN wget -c https://repo.continuum.io/miniconda/Miniconda2-latest-Linux-x86_64.sh && \
bash Miniconda2-latest-Linux-x86_64.sh -b && \
./miniconda2/bin/conda config --add channels intel && \
./miniconda2/bin/conda install -c intel caffe && \
rm -rf /root/miniconda2/pkgs/* && \
rm ~/Miniconda2-latest-Linux-x86_64.sh -f && \
echo "export PATH=/root/miniconda2/bin:$PATH" >> /root/.bashrc
WORKDIR /root/miniconda2/caffe

# FIXME: clone a specific git tag and use ARG instead of ENV once DockerHub supports this.
ENV CLONE_TAG=master
# If you want to deploy container in HOST network mode, Install SSH service and config it to Non-standard Port. Or you needn’t below rows.
RUN mkdir /var/run/sshd && \
echo "root:intelcaffe@123" | chpasswd
RUN sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/;s/#Port 22/Port 10086/' /etc/ssh/sshd_config

RUN git clone -b ${CLONE_TAG} --depth 1 https://github.com/intel/caffe.git . && \
for req in $(cat python/requirements.txt) pydot; do pip --no-cache-dir install $req; done && \
mkdir build && cd build && \
cmake -DCPU_ONLY=1 -DCMAKE_BUILD_TYPE=Release .. && \
make all -j"$(nproc)"
# SSH login fix. Otherwise user is kicked off after login
RUN sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd

ENV PYCAFFE_ROOT $CAFFE_ROOT/python
ENV PYTHONPATH $PYCAFFE_ROOT:$PYTHONPATH
ENV PATH $CAFFE_ROOT/build/tools:$PYCAFFE_ROOT:$PATH
RUN echo "$CAFFE_ROOT/build/lib" >> /etc/ld.so.conf.d/caffe.conf && ldconfig
ENV NOTVISIBLE "in users profile"
RUN echo "export VISIBLE=now" >> /etc/profile

WORKDIR /workspace
EXPOSE 10086
RUN ssh-keygen -t rsa -A && \
mkdir ~/.ssh && \
touch ~/.ssh/config && \
echo "Host *" > ~/.ssh/config && \
echo "Port 10086" >> ~/.ssh/config && \
echo "StrictHostKeyChecking no" >> ~/.ssh/config
CMD ["/usr/sbin/sshd", "-D"]
49 changes: 22 additions & 27 deletions docker/standalone/cpu-ubuntu/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,9 @@ MAINTAINER [email protected]
#ENV http_proxy proxy:port
#ENV https_proxy proxy:port

RUN apt-get update && apt-get install -y --no-install-recommends \
cpio \
RUN apt-get update && \
apt-get install -y --no-install-recommends \
cpio \
build-essential \
cmake \
git \
Expand Down Expand Up @@ -38,31 +39,20 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
python-scipy && \
rm -rf /var/lib/apt/lists/*

ENV CAFFE_ROOT=/opt/caffe
WORKDIR $CAFFE_ROOT
# Install conda and Intel Caffe conda package
WORKDIR /root/
RUN wget -c https://repo.continuum.io/miniconda/Miniconda2-latest-Linux-x86_64.sh && \
bash Miniconda2-latest-Linux-x86_64.sh -b && \
./miniconda2/bin/conda config --add channels intel && \
./miniconda2/bin/conda install -c intel caffe && \
rm -rf /root/miniconda2/pkgs/* && \
rm ~/Miniconda2-latest-Linux-x86_64.sh -f && \
echo "export PATH=/root/miniconda2/bin:$PATH" >> /root/.bashrc
WORKDIR /root/miniconda2/caffe

# FIXME: clone a specific git tag and use ARG instead of ENV once DockerHub supports this.
ENV CLONE_TAG=master

RUN pip install --upgrade pip

RUN git clone -b ${CLONE_TAG} --depth 1 https://github.com/intel/caffe.git . && \
for req in $(cat python/requirements.txt) pydot; do pip install $req; done && \
mkdir build && cd build && \
cmake -DCPU_ONLY=1 -DUSE_MLSL=1 -DCMAKE_BUILD_TYPE=Release .. && \
make all -j"$(nproc)"

ENV PYCAFFE_ROOT $CAFFE_ROOT/python
ENV PYTHONPATH $PYCAFFE_ROOT:$PYTHONPATH
ENV PATH $CAFFE_ROOT/build/tools:$PYCAFFE_ROOT:$PATH
RUN echo "$CAFFE_ROOT/build/lib" >> /etc/ld.so.conf.d/caffe.conf && ldconfig

WORKDIR /opt/caffe

RUN mkdir /var/run/sshd
RUN echo 'root:123456' | chpasswd
RUN sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
RUN sed -i 's/Port 22/Port 10010/' /etc/ssh/sshd_config
RUN mkdir /var/run/sshd && \
echo 'root:intelcaffe@123' | chpasswd
RUN sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/;s/Port 22/Port 10010/' /etc/ssh/sshd_config

# SSH login fix. Otherwise user is kicked off after login
RUN sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd
Expand All @@ -71,5 +61,10 @@ ENV NOTVISIBLE "in users profile"
RUN echo "export VISIBLE=now" >> /etc/profile

EXPOSE 10010

RUN ssh-keygen -t rsa -A && \
mkdir ~/.ssh && \
touch ~/.ssh/config && \
echo "Host *" > ~/.ssh/config && \
echo "Port 10010" >> ~/.ssh/config && \
echo "StrictHostKeyChecking no" >> ~/.ssh/config
CMD ["/usr/sbin/sshd", "-D"]
Loading

0 comments on commit 3c14534

Please sign in to comment.