From 275b7bccfb92fe43802c1e3af62d0452c9fe9983 Mon Sep 17 00:00:00 2001 From: Your Name Date: Sun, 21 Sep 2025 14:42:21 +1200 Subject: [PATCH] Add accelerated_base Docker image with Intel QuickSync and NVIDIA CUDA support - Ubuntu 22.04 base with Python 3.11 - Intel Media Driver and VAAPI for QuickSync hardware acceleration - NVIDIA CUDA support via container toolkit - FFmpeg with hardware codec support - OpenCV, PyTorch, and common ML/CV packages - Non-root user setup for security - Provides comprehensive base for ML/CV applications with hardware acceleration --- Dockerfile.accelerated_base | 138 ++++++++++++++++++++++++++++++++++++ README.md | 57 ++++++++++++++- 2 files changed, 193 insertions(+), 2 deletions(-) create mode 100644 Dockerfile.accelerated_base diff --git a/Dockerfile.accelerated_base b/Dockerfile.accelerated_base new file mode 100644 index 0000000..04f677e --- /dev/null +++ b/Dockerfile.accelerated_base @@ -0,0 +1,138 @@ +# Accelerated Base Image with Intel QuickSync, NVIDIA CUDA, FFmpeg, and Python support +# Provides a comprehensive base for ML/CV applications with hardware acceleration +FROM ubuntu:22.04 + +LABEL maintainer="j" +LABEL description="Base image with Intel QuickSync, NVIDIA CUDA support, FFmpeg, and Python 3.11" + +# Prevent interactive prompts during package installation +ENV DEBIAN_FRONTEND=noninteractive + +# Install system dependencies including Intel and NVIDIA support +RUN apt-get update && apt-get install -y \ + # Base utilities + curl \ + wget \ + git \ + build-essential \ + pkg-config \ + software-properties-common \ + # Python 3.11 + python3.11 \ + python3.11-dev \ + python3-pip \ + python3.11-venv \ + # FFmpeg with hardware acceleration support + ffmpeg \ + # Intel QuickSync / VAAPI dependencies + intel-media-va-driver-non-free \ + vainfo \ + libva-drm2 \ + libva-dev \ + libva2 \ + i965-va-driver \ + # OpenGL/Graphics libraries + libgl1 \ + libglib2.0-0 \ + libsm6 \ + libxext6 \ + libxrender-dev \ + libgomp1 \ + libglu1-mesa \ + libglu1-mesa-dev \ + libgl1-mesa-dev \ + libgl1-mesa-glx \ + # OpenCV dependencies + libopencv-dev \ + libgstreamer1.0-0 \ + libgstreamer-plugins-base1.0-0 \ + libgstreamer-plugins-bad1.0-0 \ + gstreamer1.0-plugins-base \ + gstreamer1.0-plugins-good \ + gstreamer1.0-plugins-bad \ + gstreamer1.0-plugins-ugly \ + gstreamer1.0-libav \ + gstreamer1.0-tools \ + # Video codec libraries + libx264-dev \ + libx265-dev \ + libvpx-dev \ + libfdk-aac-dev \ + libmp3lame-dev \ + libopus-dev \ + # Image format libraries + libjpeg-dev \ + libpng-dev \ + libtiff-dev \ + libwebp-dev \ + # Additional ML/numeric libraries + libhdf5-dev \ + libatlas-base-dev \ + gfortran \ + && rm -rf /var/lib/apt/lists/* + +# Set Python 3.11 as default +RUN update-alternatives --install /usr/bin/python python /usr/bin/python3.11 1 && \ + update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.11 1 && \ + update-alternatives --install /usr/bin/pip pip /usr/bin/pip3 1 + +# Upgrade pip and install essential Python packages +RUN python -m pip install --upgrade pip setuptools wheel + +# Install core Python ML/CV packages (CPU versions by default) +# CUDA versions can be overlaid at runtime or in derived images +RUN pip install --no-cache-dir \ + numpy \ + scipy \ + pandas \ + matplotlib \ + pillow \ + opencv-python-headless \ + scikit-learn \ + tqdm \ + pyyaml \ + requests + +# Install PyTorch CPU version (can be overridden in derived images for CUDA) +RUN pip install --no-cache-dir \ + torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cpu + +# Set environment variables for hardware acceleration +# Intel QuickSync / VAAPI +ENV LIBVA_DRIVER_NAME=iHD +ENV LIBVA_DRIVERS_PATH=/usr/lib/x86_64-linux-gnu/dri + +# Python environment +ENV PYTHONUNBUFFERED=1 +ENV PYTHONDONTWRITEBYTECODE=1 + +# OpenCV +ENV OPENCV_VIDEOIO_PRIORITY_GSTREAMER=1 + +# FFmpeg hardware acceleration preference +ENV FFMPEG_HWACCEL_PRIORITY="vaapi,cuda,auto" + +# NVIDIA Container Toolkit environment variables (will be used if NVIDIA runtime is available) +ENV NVIDIA_VISIBLE_DEVICES=all +ENV NVIDIA_DRIVER_CAPABILITIES=compute,utility,video + +# Create a non-root user for running applications +RUN useradd -m -s /bin/bash -u 1000 appuser && \ + usermod -a -G video appuser + +# Create common directories +RUN mkdir -p /app /data /models && \ + chown -R appuser:appuser /app /data /models + +# Set working directory +WORKDIR /app + +# Health check command to verify Python and FFmpeg are working +HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \ + CMD python -c "import torch, cv2, numpy; print('OK')" && ffmpeg -version > /dev/null 2>&1 + +# Default to non-root user (can be overridden in derived images) +USER appuser + +# Default command - can be overridden in derived images +CMD ["/bin/bash"] \ No newline at end of file diff --git a/README.md b/README.md index 9be8294..418f1eb 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,56 @@ -# debian-curl +# Generic Docker Images -Debian with Curl \ No newline at end of file +This repository contains reusable Docker base images for various purposes. + +## Available Images + +### debian-curl + +Debian with curl installed. + +### accelerated_base + +A comprehensive base image with hardware acceleration support for ML/CV applications. + +**Features:** +- Ubuntu 22.04 LTS base +- Python 3.11 with pip +- Intel QuickSync / VAAPI support for hardware video acceleration +- NVIDIA CUDA support (when NVIDIA Container Toolkit is available) +- FFmpeg with hardware acceleration codecs +- OpenCV with Python bindings +- PyTorch (CPU by default, GPU when NVIDIA runtime is available) +- Common ML/CV Python packages (numpy, scipy, pandas, matplotlib, etc.) +- Video and image codec libraries +- Non-root user setup for security + +**Usage:** +```dockerfile +FROM gitea.jde.nz/public/accelerated_base:latest + +# Your application-specific setup +COPY your_app.py /app/ +CMD ["python", "/app/your_app.py"] +``` + +**Hardware Acceleration:** +- Intel QuickSync: Automatically available when `/dev/dri` is mounted +- NVIDIA GPU: Automatically available when using `--runtime=nvidia` or `--gpus all` + +**Environment Variables:** +- `LIBVA_DRIVER_NAME=iHD` - Intel Media Driver for VAAPI +- `FFMPEG_HWACCEL_PRIORITY="vaapi,cuda,auto"` - Hardware acceleration preference +- `NVIDIA_VISIBLE_DEVICES=all` - NVIDIA GPU visibility +- `NVIDIA_DRIVER_CAPABILITIES=compute,utility,video` - NVIDIA capabilities + +**Size:** ~2.5GB (includes Python, ML libraries, and video codecs) + +## Building + +Images are automatically built and published when pushed to this repository. + +## Registry + +Images are available at: +- `gitea.jde.nz/public/:latest` +- `gitea.jde.nz/public/:latest-` (architecture-specific) \ No newline at end of file