はじめに
- NVIDIA CUDA + OpenGLを利用可能なDockerイメージの作成方法
- 用途: NVIDIA GPUを使ってコンテナ内でGPGPU処理とGUI表示する
- Ubuntu20.04までは、NVIDIAが公式で「cudagl」というDockerイメージを用意していた
- Ubuntu22.04ベースは用意されていない(2024.3.1時点)
方法
Ubuntu20.04
下記からcudaglイメージを使う。
例:Ubuntu20.04 + CUDA11.3.0(devel) + OpenGLの場合
docker pull nvcr.io/nvidia/cudagl:11.3.0-devel-ubuntu20.04
Ubuntu22.04
ベースのCUDAイメージを起点にして、OpenGL関連の必要なファイルをインストールする。
Dockerfileは以下のようになっているので、build-argで指定するか、自身のDockerfileに組み込んでビルドする。
ARG from
FROM ${from}
RUN apt-get update && apt-get install -y --no-install-recommends \
pkg-config \
libglvnd-dev libglvnd-dev:i386 \
libgl1-mesa-dev libgl1-mesa-dev:i386 \
libegl1-mesa-dev libegl1-mesa-dev:i386 \
libgles2-mesa-dev libgles2-mesa-dev:i386 && \
rm -rf /var/lib/apt/lists/*
- ポイント
下記部分がOpenGLの部分。この部分を自身のDockerfileに追記すればよい。RUN apt-get update && apt-get install -y --no-install-recommends \ pkg-config \ libglvnd-dev libglvnd-dev:i386 \ libgl1-mesa-dev libgl1-mesa-dev:i386 \ libegl1-mesa-dev libegl1-mesa-dev:i386 \ libgles2-mesa-dev libgles2-mesa-dev:i386 && \ rm -rf /var/lib/apt/lists/*
起点となるCUDAイメージは以下を参照。
例:Ubuntu22.04 + CUDA 12.3.2(devel) + OpenGL
docker build -t {YOUR_IMAGE_NAME} --build-arg "from=nvcr.io/nvidia/cuda:12.3.2-devel-ubuntu22.04" .
参考
トラブルシューティング
32bit(i386)用OpenGLライブラリのインストールが失敗する
E: Unable to locate package libglvnd-dev:i386
E: Unable to locate package libgl1-mesa-dev:i386
E: Unable to locate package libegl1-mesa-dev:i386
E: Unable to locate package libgles2-mesa-dev:i386
- 対処方法
- 上記パッケージを除いて、インストールする。