ARG CUDA_VERSION=11.1
FROM nvidia/cuda:${
CUDA_VERSION}-cudnn8-devel-ubuntu20.04
MAINTAINER "Ammar Yasir Niach email:[email protected]"
ENV DEBIAN_FRONTEND noninteractive
ENV NVIDIA_VISIBLE_DEVICES all
ENV NVIDIA_DRIVER_CAPABILITIES compute,utility
ARG PYTHON_VERSION=3.8
ARG OPENCV_VERSION=4.5.0
# Needed for string substitution
SHELL ["/bin/bash", "-c"]
ENV DEBIAN_FRONTEND=noninteractive
# ENV LD_LIBRARY_PATH /usr/local/${CUDA}/compat:$LD_LIBRARY_PATH
COPY gpu_requirements.txt ./
# Add CUDA libs paths
RUN CUDA_PATH=(/usr/local/cuda-*) && \
CUDA=`basename $CUDA_PATH` && \
echo "$CUDA_PATH/compat" >> /etc/ld.so.conf.d/${
CUDA/./-}.conf && \
ldconfig && \
# add sources for older pythons
apt-get update && \
apt-get install -y --no-install-recommends software-properties-common && \
add-apt-repository ppa:deadsnakes/ppa && \
# Install all dependencies for OpenCV
apt-get -y update -qq --fix-missing && \
apt-get -y install --no-install-recommends \
python${
PYTHON_VERSION} \
python${
PYTHON_VERSION}-dev \
$( [ ${
PYTHON_VERSION%%.*} -ge 3 ] && echo "python${PYTHON_VERSION%%.*}-distutils" ) \
gnupg2\
ca-certificates \
wget \
unzip \
cmake \
ffmpeg \
libtbb2 \
gfortran \
apt-utils \
pkg-config \
checkinstall \
qt5-default \
build-essential \
libopenblas-base \
libopenblas-dev \
liblapack-dev \
libatlas-base-dev \
#libgtk-3-dev \
#libavcodec58 \
libavcodec-dev \
#libavformat58 \
libavformat-dev \
libavutil-dev \
#libswscale5 \
libswscale-dev \
libjpeg8-dev \
libpng-dev \
libtiff5-dev \
#libdc1394-22 \
libdc1394-22-dev \
libxine2-dev \
libv4l-dev \
libgstreamer1.0 \
libgstreamer1.0-dev \
libgstreamer-plugins-base1.0-0 \
libgstreamer-plugins-base1.0-dev \
libglew-dev \
libpostproc-dev \
libeigen3-dev \
libtbb-dev \
zlib1g-dev \
libsm6 \
libxext6 \
libxrender1
# install python dependencies
# sysctl -w net.ipv4.ip_forward=1 && \
RUN wget https://bootstrap.pypa.io/get-pip.py --progress=bar:force:noscroll && \
python${
PYTHON_VERSION} get-pip.py && \
rm get-pip.py && \
pip${
PYTHON_VERSION} install \
numpy==1.19.4 \
pandas==1.1.5 \
scikit-learn==0.23.2 \
matplotlib==3.3.3 \
seaborn==0.11.1 \
pyyaml==5.3.1 \
#h5py==3.1.0\
tensorflow==2.4.0 \
keras==2.4.3 \
chainer \
theano==1.0.5 \
jupyterlab \
nltk==3.5
# Opening port for jupyter
EXPOSE 8888
# Tensorflow Current stable release for CPU and GPU and Keras
#RUN pip${PYTHON_VERSION} install tensorflow keras mxnet-cu102 optuna cupy-cuda111 chainer theano
#cntk-gpu
# Opening port for Tensorboard
EXPOSE 6006
## install pytoch
RUN pip${
PYTHON_VERSION} install torch==1.7.1+cu110 torchvision==0.8.2+cu110 torchaudio===0.7.2 -f https://download.pytorch.org/whl/torch_stable.html
#Java
#
# Install JDK (Java Development Kit), which includes JRE (Java Runtime
# Environment). Or, if you just want to run Java apps, you can install
# JRE only using: apt install default-jre
RUN apt-get install -y --no-install-recommends default-jdk
# Install OpenCV
RUN wget https://github.com/opencv/opencv/archive/$OPENCV_VERSION.zip -O opencv.zip --progress=bar:force:noscroll && \
unzip -q opencv.zip && \
mv /opencv-$OPENCV_VERSION /opencv && \
rm opencv.zip && \
wget https://github.com/opencv/opencv_contrib/archive/$OPENCV_VERSION.zip -O opencv_contrib.zip --progress=bar:force:noscroll && \
unzip -q opencv_contrib.zip && \
mv /opencv_contrib-$OPENCV_VERSION /opencv_contrib && \
rm opencv_contrib.zip && \
# Prepare build
mkdir /opencv/build && \
cd /opencv/build && \
cmake \
-D CMAKE_BUILD_TYPE=RELEASE \
-D BUILD_PYTHON_SUPPORT=ON \
-D BUILD_DOCS=ON \
-D BUILD_PERF_TESTS=OFF \
-D BUILD_TESTS=OFF \
-D CMAKE_INSTALL_PREFIX=/usr/local \
-D OPENCV_EXTRA_MODULES_PATH=/opencv_contrib/modules \
-D BUILD_opencv_python3=$( [ ${
PYTHON_VERSION%%.*} -ge 3 ] && echo "ON" || echo "OFF" ) \
-D BUILD_opencv_python2=$( [ ${
PYTHON_VERSION%%.*} -lt 3 ] && echo "ON" || echo "OFF" ) \
-D PYTHON${
PYTHON_VERSION%%.*}_EXECUTABLE=$(which python${
PYTHON_VERSION}) \
-D PYTHON_DEFAULT_EXECUTABLE=$(which python${
PYTHON_VERSION}) \
-D BUILD_EXAMPLES=OFF \
-D WITH_IPP=OFF \
-D WITH_FFMPEG=ON \
-D WITH_GSTREAMER=ON \
-D WITH_V4L=ON \
-D WITH_LIBV4L=ON \
-D WITH_TBB=ON \
-D WITH_QT=ON \
-D WITH_OPENGL=ON \
-D WITH_CUDA=ON \
-D WITH_LAPACK=ON \
#-D WITH_HPX=ON \
-D CUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda \
-D CMAKE_LIBRARY_PATH=/usr/local/cuda/lib64/stubs \
# https://kezunlin.me/post/6580691f
# https://stackoverflow.com/questions/28010399/build-opencv-with-cuda-support
-D CUDA_ARCH_BIN="5.3 6.1 7.0 7.5" \
-D CUDA_ARCH_PTX="" \
-D WITH_CUBLAS=ON \
-D WITH_NVCUVID=ON \
-D ENABLE_FAST_MATH=1 \
-D CUDA_FAST_MATH=1 \
-D ENABLE_PRECOMPILED_HEADERS=OFF \
.. \
&& \
# Build, Test and Install
cd /opencv/build && \
make -j$(nproc) && \
make install && \
ldconfig
################# darknet
WORKDIR /app
RUN git clone https://github.com/AlexeyAB/darknet.git
WORKDIR darknet
RUN make OPENCV=1 GPU=1 AVX=1 OPENMP=1 CUDNN=1 CUDNN_HALF=1 OPENMP=1 -j $(nproc)
RUN chmod +x darknet
# cleaning
# RUN apt-get -y remove \
# unzip \
# cmake \
# gfortran \
# apt-utils \
# pkg-config \
# checkinstall \
# build-essential \
# libopenblas-dev \
# liblapack-dev \
# libatlas-base-dev \
# #libgtk-3-dev \
# libavcodec-dev \
# libavformat-dev \
# libavutil-dev \
# libswscale-dev \
# libjpeg8-dev \
# libpng12-dev \
# libtiff5-dev \
# libdc1394-22-dev \
# libxine2-dev \
# libv4l-dev \
# libgstreamer1.0-dev \
# libgstreamer-plugins-base1.0-dev \
# libglew-dev \
# libpostproc-dev \
# libeigen3-dev \
# libtbb-dev \
# zlib1g-dev \
# && \
#
# apt-get autoremove -y && \
# apt-get clean && \
# rm -rf /var/lib/apt/lists/* /tmp/* ~/*
#&& \
# rm -rf /opencv /opencv_contrib /var/lib/apt/lists/* && \
# Set the default python and install PIP packages
RUN update-alternatives --install /usr/bin/python${
PYTHON_VERSION%%.*} python${
PYTHON_VERSION%%.*} /usr/bin/python${
PYTHON_VERSION} 1 && \
update-alternatives --install /usr/bin/python python /usr/bin/python${
PYTHON_VERSION} 1 && \
# Call default command.
ffmpeg -version && \
#ldd `which ffmpeg` && \
python --version && \
python -c "import cv2 ; print(cv2.__version__)"
WORKDIR "/root/"
#ENTRYPOINT ["/bin/bash"]
CMD ["jupyter","notebook","--port=8888","--ip=0.0.0.0","--allow-root","--no-browser"]
参考文献:
https://github.com/ammaryasirnaich/Deeplearning_Playland