docker-composeからRVizを起動する
NVIDIAのGPUが有効なLinuxマシンでdocker-composeからGUIアプリケーションを起動するためにいろいろ調べていたところ、 GPUの指定が必要で、それには指定方法が色々あることがわかりました。
今回はRVizを起動しようとしていたのですが、上記だけではなく、更にNVIDIA_VISIBLE_DEVICES
とNVIDIA_DRIVER_CAPABILITIES
の環境変数を設定する必要もありました。
動いた例をメモしておきます。
起動方法
docker-compose up
する前にGUIアプリケーションを使うためにxhost
コマンドでX11転送を許可する必要があります。
(docker-compose.yaml
の中身については本記事の「docker-composeの設定」を参照)
手っ取り早くやるにはlocalhost
からの通信を全部一旦許可します(使い終わったらすぐに戻します)。
$ xhost local:
non-network local connections being added to access control list
というメッセージが返ってきたらOKです。
以下のコマンドで許可されているアクセスコントロールリストを確認できます。
$ xhost
次に次のコマンドでdocker-compose.yaml
からDockerコンテナを起動すればRVizが起動します。
$ docker-compose up
終了時
localhost
からの通信を全部一旦許可していたので、もとに戻しておきます。
$ xhost -local:
docker-composeの設定
docker-compose version 1.27
環境
$ docker-compose --version --short docker-compose version 1.27.4, build 40524192 $ docker --version Docker version 20.10.4, build d3cb89e $ dpkg -l | grep nvidia-docker2 ii nvidia-docker2 2.6.0-1 all nvidia-docker CLI wrapper $ dpkg -l | grep nvidia-container-toolkit ii nvidia-container-toolkit 1.5.0-1 amd64 NVIDIA container runtime hook $ nvidia-smi | head -n 4 Sun May 23 18:43:41 2021 +-----------------------------------------------------------------------------+ | NVIDIA-SMI 460.39 Driver Version: 460.39 CUDA Version: 11.2 | |-------------------------------+----------------------+----------------------+
docker-compose.yaml
services: test: image: osrf/ros:melodic-desktop-full command: [ "roslaunch", "urdf_tutorial", "display.launch" ] + runtime: nvidia environment: DISPLAY: :1 + NVIDIA_VISIBLE_DEVICES: all + NVIDIA_DRIVER_CAPABILITIES: all volumes: - "/tmp/.X11-unix:/tmp/.X11-unix:rw"
docker-compose version 1.29
環境
$ docker-compose --version --short docker-compose version 1.29.2, build 5becea4c $ docker --version Docker version 20.10.4, build d3cb89e $ dpkg -l | grep nvidia-docker2 ii nvidia-docker2 2.6.0-1 all nvidia-docker CLI wrapper $ dpkg -l | grep nvidia-container-toolkit ii nvidia-container-toolkit 1.5.0-1 amd64 NVIDIA container runtime hook $ nvidia-smi | head -n 4 Sun May 23 18:43:41 2021 +-----------------------------------------------------------------------------+ | NVIDIA-SMI 460.39 Driver Version: 460.39 CUDA Version: 11.2 | |-------------------------------+----------------------+----------------------+
docker-compose.yaml
services: test: image: osrf/ros:melodic-desktop-full command: [ "roslaunch", "urdf_tutorial", "display.launch" ] environment: DISPLAY: :1 + NVIDIA_VISIBLE_DEVICES: all + NVIDIA_DRIVER_CAPABILITIES: all volumes: - "/tmp/.X11-unix:/tmp/.X11-unix:rw" + deploy: + resources: + reservations: + devices: + - capabilities: [gpu]
今回の件は詳しくは以下のIssueにも記載しました。