Go2Py_SIM/docker/Dockerfile.x86_64

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