DockerでGUIを使う方法、いろんな記事がネット上にあるんだけどいつも悩むから、自分用の備忘録的にまとめておく。
Contents
DockerのGUIの設定方法
Xサーバーの受け入れの制限をなくす(参考)
xhost +
以下のオプションをdocker run時に指定する
-v /tmp/.X11-unix:/tmp/.X11-unix –env=”DISPLAY”
OpenGLを動かす場合(CUDAを使わない場合)
上記に加えて
ENV NVIDIA_VISIBLE_DEVICES ${NVIDIA_VISIBLE_DEVICES:-all}
ENV NVIDIA_DRIVER_CAPABILITIES ${NVIDIA_DRIVER_CAPABILITIES:+$NVIDIA_DRIVER_CAPABILITIES,}graphics
をDockefileに指定する
OpenGLを動かす場合(CUDAを使う場合)
※ベースイメージにcudaglを使えば楽だけど、そうとも行かない場合は以下をDockerfileに書く
「DockerのGUIの設定方法」に加えて、以下をDockerfileに書く
# apt-get
RUN apt update && apt install -y --fix-missing\
wget git unzip build-essential cmake libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev curl lsof apt-utils lsb-core libatlas-base-dev vim sudo libxau-dev libxdmcp-dev libxcb1-dev libxext-dev libx11-dev
# ベースに使っているUbuntuのバージョンによって変更すること!
COPY --from=nvidia/opengl:1.0-glvnd-runtime-ubuntu16.04 \
/usr/local/lib/x86_64-linux-gnu \
/usr/local/lib/x86_64-linux-gnu
# ベースに使っているUbuntuのバージョンによって変更すること!
COPY --from=nvidia/opengl:1.0-glvnd-runtime-ubuntu16.04 \
/usr/local/share/glvnd/egl_vendor.d/10_nvidia.json \
/usr/local/share/glvnd/egl_vendor.d/10_nvidia.json
RUN echo '/usr/local/lib/x86_64-linux-gnu' >> /etc/ld.so.conf.d/glvnd.conf && \
ldconfig && \
echo '/usr/local/$LIB/libGL.so.1' >> /etc/ld.so.preload && \
echo '/usr/local/$LIB/libEGL.so.1' >> /etc/ld.so.preload
ENV NVIDIA_VISIBLE_DEVICES \
${NVIDIA_VISIBLE_DEVICES:-all}
ENV NVIDIA_DRIVER_CAPABILITIES \
${NVIDIA_DRIVER_CAPABILITIES:+$NVIDIA_DRIVER_CAPABILITIES,}graphics
GUIが動くことを確認
OpenGlを使わなくても良い場合
xeyesが動くことを確認するのが簡単
apt install x11-apps
でxeyesがインストールできる。
xeyes
で実行して、動くことを確認。エラーが出るなら、何か設定がおかしい(大抵はdocker run時の引数)
OpenGLを使う場合
まず上記のxeyesを確認する。OpenGLはそれだけでは動いていることが確認できないので、glxgearsを試す。(xeyesが動かないならOpenGLも動かないので、xeyesを試す)
上手く動くなら、歯車のデモが動く
apt install mesa-utils
でglxgearsがインストールできる。
glxgears
で歯車のデモが動くことを確認する。
No responses yet