diff --git a/README.md b/README.md index 9f35ef4..58a2542 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,9 @@ # Run Unity apps in docker container on headless Nvidia GPU server -OpenGLやGLXなどを使ってグラフィック用途でGPUを使うアプリケーションを、画面のないheadlessサーバー上で、しかもDocker内で動かす方法の最新版 +OpenGLやGLXなどを使ってグラフィック用途でGPUを使うアプリケーションを、 + +画面のないheadlessサーバー上で、しかもDocker内で動かす方法の最新版 + 具体的には、Carlaの環境の構築を目的に修正している。 @@ -16,13 +19,13 @@ 192.168.100.221:6080 -の3台のみ +の3台のみ。 ## Update: support noVNC - noVNCを使用したブラウザからのアクセスは、ポート6080を使用。一般には、vnc.htmlをアクセスし、パスワードを入れれば入れるが、エラーが出る場合(多分、ブラウザのキャッシュの関係だと思う。)もあり、 この場合、vnc_lite.htmlからアクセスするとできる。 -・また、VNC経由の場合には、ポート7000を使用。変更は、run.shをいじる。 +・また、VNC経由の場合には、ポート7000を使用。変更は、run.shをいじれえば、任意のポート番号に変更可能。 Buildするには: ``` @@ -39,7 +42,7 @@ - Nvidia GPU1枚+CPU内臓グラフィックチップ 基本、1枚目は、ローカルのディスプレイ用に使用。 -研究室サーバは、基本、ミニマムインストール+KVMのみインストール +研究室サーバは、基本、ミニマムインストール+KVMのインストール GPU passthrough機能を使い、KVMクライアント上で、GPUを使えるようにする。 KVMクライアントの設定でGPUを使えるようにする。(KVMクライアントは、どのバージョン、OSでもインストール可能) @@ -52,33 +55,11 @@ ### 2. container立ち上げ X11サーバーとアプリケーションの入ったdocker containerをビルド、立ち上げる。 -``` -nvidia-docker build -t x11-GL-docker . -docker run --runtime=nvidia --privileged -it --rm \ - -p 5900:5900 \ # or --net=host - -e BUSID=PCI:0:4:0 \ - -e SCREEN_RESOLUTION=1280x1024 \ - -e VNC_PASSWORD=passpass \ - -v /home/ryonakabayashi/x11-docker/lgsvlsimulator-linux64-2019.05:/lg \ - --name x11-GL-docker x11-GL-docker -``` - run.shがdocker内で実行される。 -7000ポートはVNC用。またホストマシンに一度ログインして、`nvidia-xconfig --query-gpu-info`を実行し、BUSIDを控えておく。 +ホストマシンに一度ログインして、`nvidia-xconfig --query-gpu-info`を実行し、BUSIDを控えておく。 -### 3. port forwarding, VNC connection -docker内で起動しているVNCサーバーに、ssh経由で接続する。 - -``` -ssh -i "$KEYFILE" -L 5900:localhost:5900 $USERNAME@$GCP_PUBLIC_IP -N & -``` - -でトンネルを作り、VNCクライアント(macならFinder)で`vnc://localhost:5900`に接続する。 - -![img](screenshot.png) - -リモートのdocker内でレンダリングした結果が手元のmacbookで確認できる環境がこれで整った。 +(startup.sh内で処理済み) ## 何をしているか 2つの要素が組み合わさってできている。 @@ -113,25 +94,6 @@ `nvidia-xconfig`を使うと、headless環境で仮想displayを使うためのXorg向けの設定を出力できる。しかしコマンド自体のオプションのマニュアルが不足しているので、release noteを読んで確認する必要がある。 -今回はTesla T4を使う。`nvidia-xconfig --query-gpu-info`を見るとBUS idはPCI:0:4:0だったので - -``` -nvidia-xconfig \ - -a \ - --virtual=1280x1024 \ # 仮想スクリーンの解像度 - --allow-empty-initial-configuration \ # ディスプレイがなくてもXサーバーを起動する - --enable-all-gpus \ # GPUを有効化 - --busid PCI:0:4:0 # GPUを見つけられるようにBUSIDを指定しておく -``` - -を実行した。これで出てきた/etc/X11/xorg.confはきちんと動いた。 - -`--use-display-device=None`をつけるという記述があるが、[Version 410\.104\(Linux\)/412\.29\(Windows\) :: NVIDIA Tesla Documentation](https://docs.nvidia.com/datacenter/tesla/tesla-release-notes-410-104/index.html) によると410.104からサポートされなくなったらしく、つけると起動しなくなるので注意。 - -詳細についてはrepositoryの記述も読んでください。 - - - ### (B) X on Docker X11 GUIアプリケーションをdocker内で動かしたい時、いくつか選択肢がある。