Harukaのnote

Linuxやプログラミング,写真,旅行等の記録帳

GPU対応のDockerイメージに対してリモートデスクトップ(noVNC)

研究室の後輩のために、cuda対応かつリモートデスクトップ可能なDockerイメージを作成したので公開します。

Docker Hub: haruka0000/cuda_vnc

以下を参考に作成しました。

ブラウザで動かせる「Linux」の「Ubuntu 22.04」のデスクトップ版(Xfce)のDockerイメージ「docker-ubuntu-desktop」を作りました - Qiita

事前にnvidia-docker2がインストールされている必要があります。

以下のコマンドを実行します。

sudo docker run -it --gpus all --platform=linux/amd64 -p 6080:6080 haruka0000/cuda_vnc:xfce_v0.1

以下のリンクを開くと接続できると思います。

http://localhost:6080/vnc.html

内部でもpytorchでcudaが使えることは確認済みです。

これをサーバーのk8sでpodとして動かして、アクセスしたいのですがk8sは素人で全然わかりません… 知っている人がいましたら教えてください🙇

使用したDockerfileです。

 FROM --platform=linux/amd64 nvidia/cuda:11.8.0-cudnn8-devel-ubuntu22.04
 
 ENV DEBIAN_FRONTEND=noninteractive
 
 ###########################################
 # VNCの設定
 ###########################################
 RUN apt update -y && apt install --no-install-recommends -y xfce4 xfce4-goodies tigervnc-standalone-server novnc websockify sudo xterm init systemd snapd vim net-tools curl wget git tzdata
 RUN apt update -y && apt install -y dbus-x11 x11-utils x11-xserver-utils x11-apps
 RUN apt install software-properties-common -y
 RUN add-apt-repository ppa:mozillateam/ppa -y
 RUN echo 'Package: *' >> /etc/apt/preferences.d/mozilla-firefox
 RUN echo 'Pin: release o=LP-PPA-mozillateam' >> /etc/apt/preferences.d/mozilla-firefox
 RUN echo 'Pin-Priority: 1001' >> /etc/apt/preferences.d/mozilla-firefox
 RUN echo 'Unattended-Upgrade::Allowed-Origins:: "LP-PPA-mozillateam:jammy";' | tee /etc/apt/apt.conf.d/51unattended-upgrades-firefox
 RUN apt update -y && apt install -y firefox
 RUN apt update -y && apt install -y xubuntu-icon-theme
 RUN touch /root/.Xauthority
 EXPOSE 5901
 EXPOSE 6080
 CMD bash -c "vncserver -localhost no -SecurityTypes None -geometry 1024x768 --I-KNOW-THIS-IS-INSECURE && openssl req -new -subj "/C=JP" -x509 -days 365 -nodes -out self.pem -keyout self.pem && websockify -D --web=/usr/share/novnc/ --cert=self.pem 6080 localhost:5901 && tail -f /dev/null"
 
 
 ##########################################
 # 開発環境
 ###########################################
 
 # Ubuntu のタイムゾーンの設定(一部ソフトのインストールに必要)
 RUN apt-get install -y tzdata
 ENV TZ=Asia/Tokyo
 
 # 必要なライブラリの追加
 RUN apt-get install -y tmux gcc build-essential libssl-dev zlib1g-dev \
                         libbz2-dev libreadline-dev libsqlite3-dev \
                         wget curl llvm libncurses5-dev libncursesw5-dev \
                         xz-utils libffi-dev liblzma-dev python3 python3-pip
 
 # OpenCV に必要なソフトの追加
 RUN apt-get install -y libgl1-mesa-dev libglib2.0-0 libsm6 libxrender1 libxext6
 
 # フォントのインストール
 RUN apt-get install -y fonts-ipafont fonts-noto-cjk fonts-noto-mono
 
 # Anacondaの環境作成
 ARG version="2023.03-1"
 RUN set -x && \
      wget https://repo.anaconda.com/archive/Anaconda3-${version}-Linux-x86_64.sh && \
      bash Anaconda3-${version}-Linux-x86_64.sh -b && \
      rm Anaconda3-${version}-Linux-x86_64.sh
 ENV PATH $PATH:/root/anaconda3/bin
 RUN conda init bash
 RUN conda update conda
 
 # Python 3.9を使いたい場合
 RUN conda create -n myenv python=3.9
 RUN echo "conda activate myenv" >> ~/.bashrc
 ENV CONDA_DEFAULT_ENV myenv && \
 PATH /root/conda/envs/myenv/bin:$PATH
 SHELL ["conda", "run", "-n", "myenv", "/bin/bash", "-c"]
 RUN python -m pip install --upgrade pip
 RUN python -m pip install torch