背景
- ホストの GPU を使った OpenGL アプリを docker 経由で動かしたい(e.g. ホストが Ubuntu であるが, 動かしたい OpenGL アプリが CentOS しかサポートしていないなど)
nvidia/opengl
5 年近く前(!)に docker + opengl をやったときとから
世の中はいろいろ進化しました.
beta レベルですが, NVIDIA が docker イメージを用意してくれています.
そこそこ最新のドライバ(390+)であれば, libgvnd のバージョンを使うのがよさそうです.
設定例
が参考になります.
基本的には, 普段の nvidia-docker run の引数に,
-v /tmp/.X11-unix:/tmp/.X11-unix -e DISPLAY=unix$DISPLAY
を加えればいけます.
注意点として, docker コンテナ内で root で glxgears など動かそうとすると DISPLAY エラーになりますので, 実行用のアカウントを docker コンテナに作っておく必要があります
(Dockerfile に useradd あたりを追加し適当につくる)
CUDA と OpenGL もつかいたいよくばりな人向け
nvidia/cudagl
があります.
TODO
- tmp/.X11-unix をマッピングすることによるセキュリティはどうなのか考えてみる.