Skip to content

Commit 4e86da3

Browse files
feat: add Dockerfile for UBI 9 with CUDA 12.6.3 and update build configurations
Signed-off-by: haitwang-cloud <[email protected]>
1 parent 41ac3aa commit 4e86da3

File tree

4 files changed

+103
-17
lines changed

4 files changed

+103
-17
lines changed

docker/Dockerfile.new

Lines changed: 79 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,79 @@
1+
# Base image upgrade to UBI 9 with CUDA 12.6.3
2+
ARG GOLANG_VERSION=1.22.6
3+
FROM nvcr.io/nvidia/cuda:12.6.3-base-ubi9 AS build
4+
5+
# Install essential build tools
6+
RUN yum install -y \
7+
wget make git gcc \
8+
&& \
9+
rm -rf /var/cache/yum/*
10+
11+
# Install Go manually for better version control
12+
RUN set -eux; \
13+
arch="$(uname -m)"; \
14+
case "${arch##*-}" in \
15+
x86_64 | amd64) ARCH='amd64' ;; \
16+
aarch64) ARCH='arm64' ;; \
17+
*) echo "unsupported architecture" ; exit 1 ;; \
18+
esac; \
19+
wget -nv -O - https://storage.googleapis.com/golang/go${GOLANG_VERSION}.linux-${ARCH}.tar.gz \
20+
| tar -C /usr/local -xz
21+
22+
ENV GOPATH /go
23+
ENV PATH $GOPATH/bin:/usr/local/go/bin:$PATH
24+
25+
# Main build process
26+
WORKDIR /build
27+
COPY . .
28+
RUN mkdir /artifacts
29+
ARG VERSION="N/A"
30+
ARG GIT_COMMIT="unknown"
31+
32+
# Core components build
33+
RUN cd /k8s-vgpu && make all VERSION=$VERSION PREFIX=/artifacts
34+
35+
# Install NVIDIA MIG tool
36+
RUN go install github.com/NVIDIA/mig-parted/cmd/[email protected]
37+
38+
# GPU library build stage
39+
FROM nvidia/cuda:12.2.0-devel-ubuntu20.04 AS nvbuild
40+
COPY ./libvgpu /libvgpu
41+
WORKDIR /libvgpu
42+
ENV DEBIAN_FRONTEND=noninteractive
43+
RUN apt-get -y update && apt-get -y install cmake
44+
RUN bash ./build.sh
45+
46+
# Image cleanup stage
47+
FROM redhat/ubi9-minimal:latest AS minimal
48+
RUN rpm -qa --queryformat='^%{NAME}-\[0-9\].*\.%{ARCH}$\n' | sort -u > /tmp/package-names.minimal
49+
50+
FROM nvcr.io/nvidia/cuda:12.6.3-base-ubi9 AS base
51+
WORKDIR /cleanup
52+
COPY --from=minimal /tmp/package-names.minimal .
53+
COPY deployments/container/cleanup/* .
54+
RUN ./cleanup.sh
55+
56+
# Final image composition
57+
FROM base
58+
ENV NVIDIA_DISABLE_REQUIRE="true" \
59+
NVIDIA_VISIBLE_DEVICES=all \
60+
NVIDIA_DRIVER_CAPABILITIES=compute,utility
61+
62+
# Metadata labels
63+
LABEL version="$VERSION" \
64+
maintainer="[email protected]" \
65+
io.k8s.display-name="HAMi vGPU Plugin" \
66+
vendor="4paradigm" \
67+
com.nvidia.git-commit=${GIT_COMMIT}
68+
69+
# File system organization
70+
COPY ./LICENSE /k8s-vgpu/LICENSE
71+
COPY --from=build /artifacts/ /k8s-vgpu/bin/
72+
COPY --from=build /go/bin/nvidia-mig-parted /k8s-vgpu/bin/
73+
COPY --from=nvbuild /libvgpu/build/libvgpu.so /k8s-vgpu/lib/nvidia/libvgpu.so."$VERSION"
74+
COPY ./docker/*.sh /k8s-vgpu/bin/
75+
COPY ./lib /k8s-vgpu/lib
76+
77+
# Runtime configuration
78+
ENV PATH="/k8s-vgpu/bin:${PATH}"
79+
ENTRYPOINT ["entrypoint.sh"]

pkg/device/nvidia/device.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,13 @@ import (
2323
"strconv"
2424
"strings"
2525

26-
"github.com/Project-HAMi/HAMi/pkg/util"
27-
"github.com/Project-HAMi/HAMi/pkg/util/nodelock"
28-
29-
spec "github.com/Project-HAMi/HAMi/pkg/nvidia-plugin/api/config/v1"
3026
corev1 "k8s.io/api/core/v1"
3127
"k8s.io/apimachinery/pkg/api/resource"
3228
"k8s.io/klog/v2"
29+
30+
spec "github.com/Project-HAMi/HAMi/pkg/nvidia-plugin/api/config/v1"
31+
"github.com/Project-HAMi/HAMi/pkg/util"
32+
"github.com/Project-HAMi/HAMi/pkg/util/nodelock"
3333
)
3434

3535
const (

pkg/nvidia-plugin/nvidia-plugin.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@
3030
* GitHub history for details.
3131
*/
3232

33-
package nvidia_plugin
33+
package main
3434

3535
//
3636
//import (

version.mk

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,20 @@
1-
GO=go
2-
GO111MODULE=on
3-
CMDS=scheduler vGPUmonitor
4-
DEVICES=nvidia
5-
OUTPUT_DIR=bin
6-
TARGET_ARCH=amd64
7-
GOLANG_IMAGE=golang:1.22.5-bullseye
8-
NVIDIA_IMAGE=nvidia/cuda:12.3.2-devel-ubuntu20.04
9-
DEST_DIR=/usr/local/vgpu/
1+
# Build configuration
2+
GO := go
3+
GO111MODULE := on
4+
CMDS := scheduler vGPUmonitor
5+
DEVICES := nvidia
6+
ARCH := linux-amd64
107

11-
VERSION = v0.0.1
12-
IMG_NAME =hami
13-
IMG_TAG="${IMG_NAME}:${VERSION}"
8+
# Path configuration
9+
OUTPUT_DIR := bin
10+
TARGET_ARCH := amd64
11+
DEST_DIR := /usr/local/vgpu
12+
13+
# Base images
14+
GOLANG_IMAGE := golang:1.22.5-bullseye
15+
NVIDIA_IMAGE := nvidia/cuda:12.3.2-devel-ubuntu20.04
16+
17+
# Version control
18+
VERSION := v0.0.1
19+
IMG_NAME := hami
20+
IMG_TAG := ${IMG_NAME}:${VERSION}

0 commit comments

Comments
 (0)