220 lines
7.0 KiB
Docker
220 lines
7.0 KiB
Docker
# Copyright (c) 2021-2022, NVIDIA CORPORATION. All rights reserved.
|
|
#
|
|
# NVIDIA CORPORATION and its licensors retain all intellectual property
|
|
# and proprietary rights in and to this software, related documentation
|
|
# and any modifications thereto. Any use, reproduction, disclosure or
|
|
# distribution of this software and related documentation without an express
|
|
# license agreement from NVIDIA CORPORATION is strictly prohibited.
|
|
#
|
|
# Docker file to build on x86_64
|
|
# https://docs.nvidia.com/deeplearning/frameworks/user-guide/index.html
|
|
# https://docs.nvidia.com/deeplearning/frameworks/support-matrix/index.html
|
|
ARG BASE_IMAGE=nvcr.io/nvidia/tritonserver:22.09-py3
|
|
FROM ${BASE_IMAGE}
|
|
|
|
# disable terminal interaction for apt
|
|
ENV DEBIAN_FRONTEND=noninteractive
|
|
ENV SHELL /bin/bash
|
|
SHELL ["/bin/bash", "-c"]
|
|
|
|
# NVIDIA repository keys: https://developer.nvidia.com/blog/updating-the-cuda-linux-gpg-repository-key/
|
|
RUN apt-key del 7fa2af80 && mkdir -p /tmp && cd /tmp \
|
|
&& wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-keyring_1.0-1_all.deb \
|
|
&& dpkg -i cuda-keyring_1.0-1_all.deb \
|
|
&& rm cuda-keyring_1.0-1_all.deb \
|
|
&& add-apt-repository --remove 'deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/ /'
|
|
|
|
# Add Isaac apt repository
|
|
RUN wget -qO - https://isaac.download.nvidia.com/isaac-ros/repos.key | apt-key add -
|
|
RUN echo 'deb https://isaac.download.nvidia.com/isaac-ros/ubuntu/main focal main' | tee -a /etc/apt/sources.list
|
|
|
|
# Ensure we have universe
|
|
RUN apt-get update \
|
|
&& apt-get install -y software-properties-common \
|
|
&& add-apt-repository universe
|
|
|
|
# Fundamentals
|
|
RUN apt-get update && apt-get install -y \
|
|
apt-transport-https \
|
|
bash-completion \
|
|
build-essential \
|
|
ca-certificates \
|
|
clang-format \
|
|
cmake \
|
|
curl \
|
|
git \
|
|
gnupg2 \
|
|
iputils-ping \
|
|
locales \
|
|
lsb-release \
|
|
rsync \
|
|
software-properties-common \
|
|
wget \
|
|
vim \
|
|
unzip \
|
|
mlocate \
|
|
libgoogle-glog-dev \
|
|
&& rm -rf /var/lib/apt/lists/* \
|
|
&& apt-get clean
|
|
|
|
# Set Python3 as default
|
|
RUN update-alternatives --install /usr/bin/python python /usr/bin/python3 1
|
|
|
|
# Python basics
|
|
RUN apt-get update && apt-get install -y \
|
|
python3-pip \
|
|
python3-pybind11 \
|
|
python3-pytest-cov \
|
|
&& rm -rf /var/lib/apt/lists/* \
|
|
&& apt-get clean
|
|
|
|
# Video utilities
|
|
RUN apt-get update && apt-get install -y \
|
|
v4l-utils \
|
|
mesa-utils \
|
|
libcanberra-gtk-module \
|
|
libcanberra-gtk3-module \
|
|
&& rm -rf /var/lib/apt/lists/* \
|
|
&& apt-get clean
|
|
|
|
# Core dev libraries
|
|
RUN apt-get update && apt-get install -y \
|
|
libasio-dev \
|
|
libbullet-dev \
|
|
libtinyxml2-dev \
|
|
libcunit1-dev \
|
|
libyaml-cpp-dev \
|
|
libopencv-dev \
|
|
python3-opencv \
|
|
&& rm -rf /var/lib/apt/lists/* \
|
|
&& apt-get clean
|
|
|
|
# Python3 (PIP)
|
|
RUN python3 -m pip install -U \
|
|
argcomplete \
|
|
autopep8 \
|
|
flake8==4.0.1 \
|
|
flake8-blind-except \
|
|
flake8-builtins \
|
|
flake8-class-newline \
|
|
flake8-comprehensions \
|
|
flake8-deprecated \
|
|
flake8-docstrings \
|
|
flake8-import-order \
|
|
flake8-quotes \
|
|
onnx \
|
|
pytest-repeat \
|
|
pytest-rerunfailures \
|
|
pytest \
|
|
pydocstyle \
|
|
scikit-learn
|
|
|
|
# Install Git-LFS
|
|
RUN curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | bash && \
|
|
apt-get update && apt-get install -y \
|
|
git-lfs \
|
|
&& rm -rf /var/lib/apt/lists/* \
|
|
&& apt-get clean
|
|
|
|
# Upgrade cmake to 3.22.1 to match Ubuntu 22.04
|
|
# Key rotation 2024-01-10
|
|
RUN wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | gpg --dearmor - | tee /usr/share/keyrings/kitware-archive-keyring.gpg >/dev/null \
|
|
&& echo 'deb [signed-by=/usr/share/keyrings/kitware-archive-keyring.gpg] https://apt.kitware.com/ubuntu/ focal main' | tee /etc/apt/sources.list.d/kitware.list >/dev/null \
|
|
&& apt-get update \
|
|
&& apt-get remove -y cmake && apt-get purge -y cmake && apt-get remove -y cmake-data && apt-get purge -y cmake-data \
|
|
&& apt-get install -y cmake=3.22.1-0kitware1ubuntu20.04.1 cmake-data=3.22.1-0kitware1ubuntu20.04.1 \
|
|
&& cmake --version \
|
|
&& rm -rf /var/lib/apt/lists/* \
|
|
&& apt-get clean
|
|
|
|
# Pytorch
|
|
RUN python3 -m pip install -U --extra-index-url https://download.pytorch.org/whl/cu113 \
|
|
torch \
|
|
torchvision \
|
|
torchaudio
|
|
|
|
# Install VPI packages
|
|
ARG HAS_GPU="true"
|
|
RUN if [ "$HAS_GPU" = "true" ]; then \
|
|
set -e ; \
|
|
apt-key adv --fetch-key https://repo.download.nvidia.com/jetson/jetson-ota-public.asc ; \
|
|
add-apt-repository 'deb http://repo.download.nvidia.com/jetson/x86_64/focal r35.4 main' ; \
|
|
apt-get update ; \
|
|
apt-get install libnvvpi2 vpi2-dev ; \
|
|
rm -rf /var/lib/apt/lists/* ; \
|
|
apt-get clean ; \
|
|
fi
|
|
|
|
# Install Tao converter
|
|
RUN mkdir -p /opt/nvidia/tao && \
|
|
cd /opt/nvidia/tao && \
|
|
wget https://developer.nvidia.com/tao-converter-80 && \
|
|
unzip tao-converter-80 && \
|
|
chmod 755 $(find /opt/nvidia/tao -name "tao-converter") && \
|
|
ln -sf $(find /opt/nvidia/tao -name "tao-converter") /opt/nvidia/tao/tao-converter && \
|
|
rm tao-converter-80
|
|
|
|
ENV PATH="${PATH}:/opt/nvidia/tao"
|
|
|
|
# Update environment
|
|
ENV LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:/opt/tritonserver/lib"
|
|
|
|
# Add MQTT binaries and libraries
|
|
RUN apt-add-repository ppa:mosquitto-dev/mosquitto-ppa \
|
|
&& apt-get update \
|
|
&& apt-get install -y mosquitto mosquitto-clients \
|
|
&& rm -rf /var/lib/apt/lists/* \
|
|
&& apt-get clean
|
|
|
|
RUN python3 -m pip install -U \
|
|
paho-mqtt
|
|
|
|
# Compression dependencies
|
|
RUN apt-get update && apt-get install -y \
|
|
libv4l-dev \
|
|
kmod \
|
|
&& rm -rf /var/lib/apt/lists/* \
|
|
&& apt-get clean
|
|
|
|
# Install NVIDIA v4l2 extensions for h264 support
|
|
RUN apt-get update && apt-get install -y nvv4l2
|
|
|
|
# Upgrade libc to resolve vulnerabilities including CVE-2019-11477
|
|
RUN apt-get update && apt-get install -y --only-upgrade \
|
|
linux-libc-dev \
|
|
&& rm -rf /var/lib/apt/lists/* \
|
|
&& apt-get clean
|
|
|
|
# Downgrade protobuf
|
|
RUN python3 -m pip install \
|
|
protobuf==3.20.1
|
|
|
|
# GPU usage monitoring on x86
|
|
RUN python3 -m pip install \
|
|
gpustat==0.6.0
|
|
|
|
# Python3 (PIP)
|
|
RUN python3 -m pip install -U \
|
|
mailcap-fix
|
|
|
|
# Resolve vulnerability in mailcap.py by removing it (CVE-2015-20107)
|
|
RUN rm -f /opt/tritonserver/backends/dali/conda/envs/dalienv/lib/python3.8/mailcap.py
|
|
|
|
# Remove any platform entangling dependencies
|
|
RUN touch \
|
|
/usr/lib/x86_64-linux-gnu/libcuda.so \
|
|
/usr/lib/x86_64-linux-gnu/libnvcuvid.so \
|
|
/usr/lib/x86_64-linux-gnu/libnvidia.so \
|
|
/usr/lib/firmware \
|
|
/usr/local/cuda/compat/lib || true
|
|
|
|
RUN rm -rf \
|
|
/usr/lib/x86_64-linux-gnu/libcuda.so* \
|
|
/usr/lib/x86_64-linux-gnu/libnvcuvid.so* \
|
|
/usr/lib/x86_64-linux-gnu/libnvidia-*.so* \
|
|
/usr/lib/firmware \
|
|
/usr/local/cuda/compat/lib || true
|
|
|
|
# Restore symlink for nvencode
|
|
RUN ln -f -s /usr/lib/x86_64-linux-gnu/libnvidia-encode.so.1 /usr/lib/x86_64-linux-gnu/libnvidia-encode.so
|