| # Copyright (c) 2019-2021, NVIDIA CORPORATION. All rights reserved. |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| |
| ARG GOLANG_VERSION=x.x.x |
| ARG VERSION="N/A" |
| |
| FROM nvidia/cuda:12.9.0-base-ubuntu20.04 as build |
| |
| RUN apt-get update && \ |
| apt-get install -y wget make git gcc \ |
| && \ |
| rm -rf /var/lib/apt/lists/* |
| |
| ARG GOLANG_VERSION=x.x.x |
| RUN set -eux; \ |
| \ |
| arch="$(uname -m)"; \ |
| case "${arch##*-}" in \ |
| x86_64 | amd64) ARCH='amd64' ;; \ |
| ppc64el | ppc64le) ARCH='ppc64le' ;; \ |
| aarch64 | arm64) ARCH='arm64' ;; \ |
| *) echo "unsupported architecture" ; exit 1 ;; \ |
| esac; \ |
| wget -nv -O - https://storage.googleapis.com/golang/go${GOLANG_VERSION}.linux-${ARCH}.tar.gz \ |
| | tar -C /usr/local -xz |
| |
| ENV GOPATH /go |
| ENV PATH $GOPATH/bin:/usr/local/go/bin:$PATH |
| |
| WORKDIR /build |
| COPY . . |
| |
| # NOTE: Until the config utilities are properly integrated into the |
| # nvidia-container-toolkit repository, these are built from the `tools` folder |
| # and not `cmd`. |
| RUN GOPATH=/artifacts go install -ldflags="-s -w -X 'main.Version=${VERSION}'" ./tools/... |
| |
| |
| FROM nvcr.io/nvidia/cuda:12.9.0-base-ubuntu20.04 |
| |
| # Remove the CUDA repository configurations to avoid issues with rotated GPG keys |
| RUN rm -f /etc/apt/sources.list.d/cuda.list |
| |
| ARG DEBIAN_FRONTEND=noninteractive |
| RUN apt-get update && apt-get install -y --no-install-recommends \ |
| libcap2 \ |
| curl \ |
| && \ |
| rm -rf /var/lib/apt/lists/* |
| |
| ENV NVIDIA_DISABLE_REQUIRE="true" |
| ENV NVIDIA_VISIBLE_DEVICES=void |
| ENV NVIDIA_DRIVER_CAPABILITIES=utility |
| |
| ARG ARTIFACTS_ROOT |
| ARG PACKAGE_DIST |
| COPY ${ARTIFACTS_ROOT}/${PACKAGE_DIST} /artifacts/packages/${PACKAGE_DIST} |
| |
| WORKDIR /artifacts/packages |
| |
| ARG PACKAGE_VERSION |
| ARG TARGETARCH |
| ENV PACKAGE_ARCH ${TARGETARCH} |
| |
| RUN dpkg -i \ |
| ${PACKAGE_DIST}/${PACKAGE_ARCH}/libnvidia-container1_1.*.deb \ |
| ${PACKAGE_DIST}/${PACKAGE_ARCH}/libnvidia-container-tools_1.*.deb \ |
| ${PACKAGE_DIST}/${PACKAGE_ARCH}/nvidia-container-toolkit*_${PACKAGE_VERSION}*.deb |
| |
| WORKDIR /work |
| |
| COPY --from=build /artifacts/bin /work/ |
| |
| ENV PATH=/work:$PATH |
| |
| LABEL io.k8s.display-name="NVIDIA Container Runtime Config" |
| LABEL name="NVIDIA Container Runtime Config" |
| LABEL vendor="NVIDIA" |
| LABEL version="${VERSION}" |
| LABEL release="N/A" |
| LABEL summary="Automatically Configure your Container Runtime for GPU support." |
| LABEL description="See summary" |
| |
| RUN mkdir /licenses && mv /NGC-DL-CONTAINER-LICENSE /licenses/NGC-DL-CONTAINER-LICENSE |
| |
| ENTRYPOINT ["/work/nvidia-toolkit"] |