From 1dbabb23626368dddac2a79e3df4852f8ea52cdb Mon Sep 17 00:00:00 2001 From: Changming Sun Date: Wed, 25 Nov 2020 15:38:22 -0800 Subject: [PATCH] Update dockerfiles (#5929) 1. Remove conda from the images. Because conda contains a file named /opt/miniconda/lib/libcrypto.so.1.0.0 which can't pass our security scan. Also, it will be easier for us to manage the third party usage registrations. 2. Remove openssh from the images. Because the official openssh package provided by Ubuntu can't pass our security scan. 3. Reduce the image size to 1/3 by using stages. Also, because it contains less packages, it will be less often needed to update. 4. Put the LICENSE-IMAGE.txt file in right place. It is missed in current images. You can see it was added to a temp folder "/code" but it got deleted afterwards. 5. Update the CPU docker image's base image to Ubuntu 18.04. The GPU one is already 18.04. It's better to keep them the same. 6. Remove the build arg ONNXRUNTIME_REPO/ONNXRUNTIME_BRANCH. Instead, the new one always uses the local source. I feel it can reduce confusion. --- .dockerignore | 1 - dockerfiles/Dockerfile.cuda | 32 ++++++++++++-------------------- dockerfiles/Dockerfile.source | 29 +++++++++++------------------ dockerfiles/README.md | 6 +++--- 4 files changed, 26 insertions(+), 42 deletions(-) diff --git a/.dockerignore b/.dockerignore index ae6f2780700a1..3610b792ef830 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,5 +1,4 @@ .git .gitignore .gitattributes -docs diff --git a/dockerfiles/Dockerfile.cuda b/dockerfiles/Dockerfile.cuda index 0d8f076c08388..721fad94ae3d7 100644 --- a/dockerfiles/Dockerfile.cuda +++ b/dockerfiles/Dockerfile.cuda @@ -6,27 +6,19 @@ # nVidia cuda 10.2 Base Image FROM nvidia/cuda:10.2-cudnn8-devel -MAINTAINER Vinitra Swamy "viswamy@microsoft.com" +MAINTAINER Changming Sun "chasun@microsoft.com" +ADD . /code -ARG ONNXRUNTIME_REPO=https://github.com/Microsoft/onnxruntime -ARG ONNXRUNTIME_BRANCH=master - -RUN apt-get update &&\ - apt-get install -y sudo git bash unattended-upgrades +ENV DEBIAN_FRONTEND=noninteractive +RUN apt-get update && apt-get install -y --no-install-recommends python3-dev ca-certificates g++ python3-numpy gcc make git python3-setuptools python3-wheel python3-pip unattended-upgrades RUN unattended-upgrade -WORKDIR /code -ENV PATH /usr/local/nvidia/bin:/usr/local/cuda/bin:/code/cmake-3.14.3-Linux-x86_64/bin:/opt/miniconda/bin:${PATH} -ENV LD_LIBRARY_PATH /opt/miniconda/lib:$LD_LIBRARY_PATH +ENV PATH /usr/local/nvidia/bin:/usr/local/cuda/bin:${PATH} +RUN apt-get update && apt-get install -y --no-install-recommends python3-dev ca-certificates g++ python3-numpy gcc make git python3-setuptools python3-wheel python3-pip aria2 && aria2c -q -d /tmp -o cmake-3.18.2-Linux-x86_64.tar.gz https://github.com/Kitware/CMake/releases/download/v3.18.2/cmake-3.18.2-Linux-x86_64.tar.gz && tar -zxf /tmp/cmake-3.18.2-Linux-x86_64.tar.gz --strip=1 -C /usr + +RUN cd /code && /bin/bash ./build.sh --skip_submodule_sync --cuda_home /usr/local/cuda --cudnn_home /usr/lib/x86_64-linux-gnu/ --use_cuda --config Release --build_wheel --update --build --parallel --cmake_extra_defines ONNXRUNTIME_VERSION=$(cat ./VERSION_NUMBER) 'CMAKE_CUDA_ARCHITECTURES=30;37;50;52;60;70' -# Prepare onnxruntime repository & build onnxruntime with CUDA -RUN git clone --single-branch --branch ${ONNXRUNTIME_BRANCH} --recursive ${ONNXRUNTIME_REPO} onnxruntime &&\ - /bin/sh onnxruntime/dockerfiles/scripts/install_common_deps.sh &&\ - cp onnxruntime/docs/Privacy.md /code/Privacy.md &&\ - cp onnxruntime/ThirdPartyNotices.txt /code/ThirdPartyNotices.txt &&\ - cp onnxruntime/dockerfiles/LICENSE-IMAGE.txt /code/LICENSE-IMAGE.txt &&\ - cd onnxruntime &&\ - /bin/sh ./build.sh --cuda_home /usr/local/cuda --cudnn_home /usr/lib/x86_64-linux-gnu/ --use_cuda --config Release --build_wheel --update --build --cmake_extra_defines ONNXRUNTIME_VERSION=$(cat ./VERSION_NUMBER) &&\ - pip install /code/onnxruntime/build/Linux/Release/dist/*.whl &&\ - cd .. &&\ - rm -rf onnxruntime cmake-3.14.3-Linux-x86_64 +FROM nvidia/cuda:10.2-cudnn8-runtime +COPY --from=0 /code/build/Linux/Release/dist /root +COPY --from=0 /code/dockerfiles/LICENSE-IMAGE.txt /code/LICENSE-IMAGE.txt +RUN apt-get update && apt-get install -y --no-install-recommends libstdc++6 ca-certificates python3-setuptools python3-wheel python3-pip && python3 -m pip install /root/*.whl && rm -rf /root/*.whl \ No newline at end of file diff --git a/dockerfiles/Dockerfile.source b/dockerfiles/Dockerfile.source index 9967b5a96f3a3..e63754760160e 100644 --- a/dockerfiles/Dockerfile.source +++ b/dockerfiles/Dockerfile.source @@ -4,24 +4,17 @@ # -------------------------------------------------------------- # Dockerfile to run ONNXRuntime with source build for CPU -# Ubuntu 16.04 Base Image -FROM ubuntu:16.04 -MAINTAINER Vinitra Swamy "viswamy@microsoft.com" +FROM ubuntu:18.04 +MAINTAINER Changming Sun "chasun@microsoft.com" +ADD . /code -ARG ONNXRUNTIME_REPO=https://github.com/Microsoft/onnxruntime -ARG ONNXRUNTIME_SERVER_BRANCH=master - -RUN apt-get update &&\ - apt-get install -y sudo git bash - -WORKDIR /code -ENV PATH /opt/miniconda/bin:/code/cmake-3.14.3-Linux-x86_64/bin:${PATH} +ENV DEBIAN_FRONTEND=noninteractive +RUN apt-get update && apt-get install -y --no-install-recommends python3-dev ca-certificates g++ python3-numpy gcc make git python3-setuptools python3-wheel python3-pip aria2 && aria2c -q -d /tmp -o cmake-3.18.2-Linux-x86_64.tar.gz https://github.com/Kitware/CMake/releases/download/v3.18.2/cmake-3.18.2-Linux-x86_64.tar.gz && tar -zxf /tmp/cmake-3.18.2-Linux-x86_64.tar.gz --strip=1 -C /usr # Prepare onnxruntime repository & build onnxruntime -RUN git clone --single-branch --branch ${ONNXRUNTIME_SERVER_BRANCH} --recursive ${ONNXRUNTIME_REPO} onnxruntime &&\ - /bin/sh onnxruntime/dockerfiles/scripts/install_common_deps.sh &&\ - cd onnxruntime &&\ - /bin/sh ./build.sh --use_openmp --config Release --build_wheel --update --build --parallel --cmake_extra_defines ONNXRUNTIME_VERSION=$(cat ./VERSION_NUMBER) &&\ - pip install /code/onnxruntime/build/Linux/Release/dist/*.whl &&\ - cd .. &&\ - rm -rf onnxruntime cmake-3.14.3-Linux-x86_64 +RUN cd /code && /bin/bash ./build.sh --skip_submodule_sync --use_openmp --config Release --build_wheel --update --build --parallel --cmake_extra_defines ONNXRUNTIME_VERSION=$(cat ./VERSION_NUMBER) + +FROM ubuntu:18.04 +COPY --from=0 /code/build/Linux/Release/dist /root +COPY --from=0 /code/dockerfiles/LICENSE-IMAGE.txt /code/LICENSE-IMAGE.txt +RUN apt-get update && apt-get install -y --no-install-recommends libstdc++6 libgomp1 ca-certificates python3-setuptools python3-wheel python3-pip && python3 -m pip install /root/*.whl && rm -rf /root/*.whl \ No newline at end of file diff --git a/dockerfiles/README.md b/dockerfiles/README.md index 3e462a92b0bf2..b7c62e640a375 100644 --- a/dockerfiles/README.md +++ b/dockerfiles/README.md @@ -41,7 +41,7 @@ Use `docker pull` with any of the images and tags below to pull an image and try 1. Build the docker image from the Dockerfile in this repository. ``` - docker build -t onnxruntime-source -f Dockerfile.source . + docker build -t onnxruntime-source -f Dockerfile.source .. ``` 2. Run the Docker image @@ -51,11 +51,11 @@ Use `docker pull` with any of the images and tags below to pull an image and try ``` ## CUDA -**Ubuntu 16.04, CUDA 10.0, CuDNN 7** +**Ubuntu 18.04, CUDA 10.2, CuDNN 8** 1. Build the docker image from the Dockerfile in this repository. ``` - docker build -t onnxruntime-cuda -f Dockerfile.cuda . + docker build -t onnxruntime-cuda -f Dockerfile.cuda .. ``` 2. Run the Docker image