diff --git a/Dockerfile b/Dockerfile index 1cce1e9..4a3722a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -42,16 +42,17 @@ python-pexpect \ pcl-tools \ openssh-server \ - && \ - apt-get clean && \ - rm -rf /var/lib/apt/lists/* + locales && \ + apt-get clean && rm -rf /var/lib/apt/lists/* && \ + locale-gen en_US.UTF-8 + RUN pip install --upgrade pip setuptools RUN packages='libsdl2-2.0 xserver-xorg libvulkan1' && \ - apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y $packages --no-install-recommends && \ - VULKAN_API_VERSION=`dpkg -s libvulkan1 | grep -oP 'Version: [0-9|\.]+' | grep -oP '[0-9|\.]+'` && \ - mkdir -p /etc/vulkan/icd.d/ && \ - echo \ + apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y $packages --no-install-recommends && \ + VULKAN_API_VERSION=`dpkg -s libvulkan1 | grep -oP 'Version: [0-9|\.]+' | grep -oP '[0-9|\.]+'` && \ + mkdir -p /etc/vulkan/icd.d/ && \ + echo \ "{\ \"file_format_version\" : \"1.0.0\",\ \"ICD\": {\ @@ -59,17 +60,12 @@ \"api_version\" : \"${VULKAN_API_VERSION}\"\ }\ }" > /etc/vulkan/icd.d/nvidia_icd.json && \ - rm -rf /var/lib/apt/lists/* + apt-get clean && rm -rf /var/lib/apt/lists/* # Error constructing proxy for org.gnome.Terminal:/org/gnome/Terminal/Factory0: Failed to execute child process dbus-launch (No such file or directory) # fix by setting LANG https://askubuntu.com/questions/608330/problem-with-gnome-terminal-on-gnome-3-12-2 # to install locales https://stackoverflow.com/questions/39760663/docker-ubuntu-bin-sh-1-locale-gen-not-found -RUN apt-get clean && \ - apt-get update && \ - apt-get install -y locales && \ - rm -rf /var/lib/apt/lists/* && \ - locale-gen en_US.UTF-8 ENV LANG en_US.UTF-8 ENV LANGUAGE en_US:en ENV LC_ALL en_US.UTF-8 @@ -94,7 +90,7 @@ pkg-config \ libelf-dev \ gnupg patch xinit && \ - rm -rf /var/lib/apt/lists/* + apt-get clean && rm -rf /var/lib/apt/lists/* # libc6:i386 \ # (1-2) Install xorg server and xinit BEFORE INSTALLING NVIDIA DRIVER. @@ -112,10 +108,9 @@ wget https://developer.download.nvidia.com/compute/cuda/11.6.0/local_installers/cuda-repo-ubuntu1804-11-6-local_11.6.0-510.39.01-1_amd64.deb && \ dpkg -i cuda-repo-ubuntu1804-11-6-local_11.6.0-510.39.01-1_amd64.deb && \ apt-key add /var/cuda-repo-ubuntu1804-11-6-local/7fa2af80.pub -RUN apt-get update && \ - apt-get install -y --no-install-recommends \ +RUN apt-get update && apt-get install -y --no-install-recommends \ cuda-drivers && \ - rm -rf /var/lib/apt/lists/* + apt-get clean && rm -rf /var/lib/apt/lists/* # (2) Configurate Xorg @@ -127,16 +122,12 @@ # x11-apps: xeyes can be used to make sure that X11 server is running. # # Note: x11vnc in ubuntu18.04 is useless beacuse of stack smashing bug. See below to manual compilation. -RUN apt-get update && apt-get install -y --no-install-recommends \ - mesa-utils lxterminal gnome-tweak-tool \ - x11-apps && \ - rm -rf /var/lib/apt/lists/* -# solution for the `stack smashing detected` issue -# https://github.com/LibVNC/x11vnc/issues/61 RUN apt-get update && apt-get install -y --no-install-recommends \ - automake autoconf libssl-dev xorg-dev libvncserver-dev xdg-user-dirs xdg-utils && \ - rm -rf /var/lib/apt/lists/* && \ + mesa-utils lxterminal gnome-tweak-tool x11-apps \ + automake autoconf libssl-dev xorg-dev libvncserver-dev \ + xdg-user-dirs xdg-utils && \ + apt-get clean && rm -rf /var/lib/apt/lists/* && \ git clone -b 0.9.16 https://github.com/LibVNC/x11vnc.git && \ cd x11vnc && \ ./autogen.sh && \ @@ -147,7 +138,7 @@ # vulkan-utils includes vulkan-smoketest, benchmark software of vulkan API RUN apt-get update && apt-get install -y --no-install-recommends \ vulkan-utils firefox openbox menu alsa pulseaudio libgtk2.0-0 && \ - rm -rf /var/lib/apt/lists/* + apt-get clean && rm -rf /var/lib/apt/lists/* # novnc # download websockify as well @@ -162,7 +153,7 @@ # related? https://github.com/Microsoft/WSL/issues/2016 RUN apt-get update && apt-get install -y --no-install-recommends \ dbus-x11 libdbus-c++-1-0v5 && \ - rm -rf /var/lib/apt/lists/* + apt-get clean && rm -rf /var/lib/apt/lists/* RUN echo "alias m='cd /home/$USERNAME ; su $USERNAME'" >> /home/$USERNAME/.bashrc @@ -175,8 +166,7 @@ python-rosinstall \ python-rosinstall-generator \ python-wstool && \ - apt-get clean && \ - rm -rf /var/lib/apt/lists/* + apt-get clean && rm -rf /var/lib/apt/lists/* # addtional ROS package RUN apt-get update && apt-get install -y --no-install-recommends \ @@ -186,8 +176,7 @@ python3-numpy \ libomp-dev \ libomp5 && \ - apt-get clean && \ - rm -rf /var/lib/apt/lists/* + apt-get clean && rm -rf /var/lib/apt/lists/* RUN pip install --upgrade setuptools wheel && \ pip install \ diff --git a/README.md b/README.md index 11b19de..d320641 100644 --- a/README.md +++ b/README.md @@ -1,19 +1,16 @@ # Run Carla and ROS-Bridge in docker container on KVM hosted Server by using GPU passthrough technique -OpenGLやGLXなどを使って画面表示を行うアプリケーションを、画面のないheadlessサーバー上で、しかもDocker内で動かす方法 - -具体的には、Carlaの環境の構築を目的にしている。 +CarlaをVulkanを使って画面表示を行うアプリケーション。 +画面のないheadlessサーバー上で、しかもDocker内で動かし、Webブラウザで操作できる。 ホストの要件 Nvidia GPUカード1枚が認識できるDockerサーバー +サーバー本体は、GPU pass through設定にする。 -ヘッドレスでの使用を想定しており、例えば、GPU付きノートPCでの使用は、今のところできない。 +ヘッドレスでの使用を想定しており、GPU付きノートPCでの使用は、今のところできない。 -GPU付きノートでdocker container上でGPUを使い画面描画をしようとすると、ノート上の画面表示に使用してるGPUと重複してしまうため、画面がフリーズしてしまう。 -フリーズは画面のみなので、ssh経由では入れるが、使い物にならなくなる。 -もし、ノートPCで動かしたい場合には、carla0910を使うとよい。 -Docker上で動かす場合には、元のcuda-toolkitのバージョンを合わせる必要があるので注意。 +Docker上で動かす場合には、Dockerを動かす元のcuda-toolkitのバージョンを合わせる必要があるので注意。 Cuda toolkitのバージョンは、リビジョンが違っても動作しないので、合わせる必要がある。 v4.0.0 ではcuda11.6のドライバーをインストールしている。 @@ -23,13 +20,11 @@ Linux->x86_64->Ubuntu->18.04->deb(local) の手順に置換する。 - - ## Update: support noVNC - noVNCを使用したブラウザからのアクセスは、ポート6080を使用。一般には、vnc.htmlをアクセスし、パスワードを入れれば入れるが、エラーが出る場合(多分、ブラウザのキャッシュの関係だと思う。)もあり、 この場合、vnc_lite.htmlからアクセスするとできる。 -・また、VNC経由の場合には、ポート7000を使用。変更は、run.shをいじれえば、任意のポート番号に変更可能。 +・また、VNC経由の場合には、ポート7000を使用。変更は、run.shをいじれば、任意のポート番号に変更可能。 Buildするには: ``` @@ -42,13 +37,28 @@ ## 実行の仕方 step .1 ブラウザ経由でアクセス。 + 192.168.100.231:6080 + + step .2 vnc.htmlから入る。 + + step .3 password kobaken + + step .4 マウス右クリックで、ターミナル開く + + step .5 m リターンでユーザーモードを切り替える + + step .6 cd scripts + + step .7 ./startcarla.sh + + setp .8 ./launchcarla.sh @@ -57,7 +67,6 @@ sshログインして`nvidia-smi`を実行して、GPUが検出されることと、入っているドライババージョンを確認 - ### 2. container立ち上げ X11サーバーとアプリケーションの入ったdocker containerをビルド、立ち上げる。