概要
- ホスト側のGUIでdocker上のUnityEditorを起動する方法を紹介します
- UbuntuのUnity導入手順が面倒だったのでdockerfileにまとめました
- ほとんど前回の投稿と同じ内容です
- 簡単に使える dockerfile がなかったので作って公開しました → chikuta-dockerfiles
検証環境
今回検証した環境は以下になります。
Hardware
cpu - AMD Ryzen 9 3900X
gpu - Geforce RTX 2060 super
ram - 32G
Software
os - ubuntu 20.04.1
kernel - Linux define 5.4.0-48-generic
docker - 19.03.13
nvidia-driver - 450.66
cuda version - 11.0
nvidia-smi
の出力を添付しておきます。
$ nvidia-smi
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 450.66 Driver Version: 450.66 CUDA Version: 11.0 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|===============================+======================+======================|
| 0 GeForce RTX 206... Off | 00000000:0E:00.0 On | N/A |
| 38% 40C P8 11W / 175W | 916MiB / 7979MiB | 1% Default |
| | | N/A |
+-------------------------------+----------------------+----------------------+
環境整備
最初にnvidia-container-runtimeをインストールします。
# apt 関連設定
$ curl -s -L https://nvidia.github.io/nvidia-container-runtime/gpgkey | sudo apt-key add -
$ distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
$ curl -s -L https://nvidia.github.io/nvidia-container-runtime/$distribution/nvidia-container-runtime.list | sudo tee /etc/apt/sources.list.d/nvidia-container-runtime.list
# nvidia-container-runtimeインストール
$ sudo apt update
$ sudo apt install nvidia-container-runtime
# docker service の再起動
$ sudo systemctl restart docker.service
次に docker group に自身の UID を登録します。docker を使っている人はやっていると思いますが念の為。
$ sudo usermod -a -G docker `id -un`
$ sudo systemctl restart docker.service
実行方法
次にdockerイメージのビルドを行います。
$ git clone https://github.com/chikuta/chikuta-dockerfiles.git
$ cd chikuta-dockerfiles
$ ./docker/ros-bionic-melodic-unity/build-docker-image.bash
次に以下のコマンドを実行することでビルドしたイメージのコンテナを起動できます。スクリプトの中身はxhost周りの処理とdockerの引数をラッピングしたものです。必要に応じて編集をすれば自分の環境を作れるで積極的にカスタマイズしましょう。
$ cd chikuta-dockerfiles
$ ./docker/ros-bionic-melodic-unity/run-docker-container.bash
スクリプトを実行すると青色のterminatorが立ち上がります。これは dockerコンテナ上で動いているターミナルアプリケーションになるため、ここで実行したコマンドは全てdockerコンテナ上で処理されます。
次にUnityHubを立ち上げてみます。
cd /opt/unity
./UnityHub.AppImage
必要な環境をインストールした後にUnityEditorを立ち上げてみましょう。
画像は適当な Free Island Collection
をAsset Storeから取得して表示したものになります。
次はROS連携あたりを書いていきます。
参考
- https://waldeinsamkeit.hatenablog.jp/entry/2019/08/17/002854
- https://nvidia.github.io/nvidia-container-runtime/
- https://medium.com/@benjamin.botto/opengl-and-cuda-applications-in-docker-af0eece000f1
- https://qiita.com/chikuta/items/a62cd1d8d945f9b826b1
- https://forum.unity.com/threads/unity-on-linux-release-notes-and-known-issues.350256/