Singularity 컨테이너를 사용할 때 GUI를 통해 Visual Studio Code를 실행할 수 없음: gtk, dbus 및 dconf 오류 발생

Singularity 컨테이너를 사용할 때 GUI를 통해 Visual Studio Code를 실행할 수 없음: gtk, dbus 및 dconf 오류 발생

Ubuntu 16.04를 실행하는 랩톱에 다른 소프트웨어(Blender)에 대한 많은 종속성을 설치하지 않으려고 합니다. 그래서 저는 해당 컨테이너를 통해 블렌더를 컴파일할 수 있도록 이러한 종속성을 갖춘 Singularity 컨테이너를 구축하기로 결정했습니다. 따라서 내 목표는 컨테이너에 VS Code를 포함하고, 시각적으로 실행하고, 로컬 컴퓨터에서 Blender를 컴파일하고, 디버깅/코드 편집 등을 수행하는 것입니다. VS Code가 설치된 컨테이너를 빌드하는 방법은 다음과 같습니다.

BootStrap: docker
From: nvidia/cuda:9.0-devel-ubuntu16.04

%post

apt-get -y update && apt-get -y install locales
locale-gen en_US.UTF-8
apt-get -y update && apt-get -y install make \
                                        dpkg \
                                        wget \
                                        bzip2 \
                                        libglib2.0-0 \
                                        libxext6 \
                                        libsm6 \
                                        libxrender1 \
                                        g++ \
                                        gcc \
                                        xvfb \
                                        libyaml-cpp-dev \
                                        git \
                                        cmake \
                                        vim \
                                        curl \
                                        ca-certificates \
                                        software-properties-common \
                                        python3 \
                                        python3-pip \
                                        gdb \
                                        libopenexr-dev \
                                        zlib1g-dev \
                                        xserver-xorg \
                                        freeglut3-dev \
                                        mesa-utils \
                                        libreadline-dev \
                                        gnuplot \
                                        gnuplot-qt \
                                        unzip \
                                        libboost-all-dev \
                                        libnss3 \
                                        libgconf-2-4 \
                                        libasound2 \
                                        libsecret-1-0 \
                                        libnss3 \
                                        libgconf-2-4 \
                                        libasound2 \
                                        libatk-adaptor \
                                        libgail-common \
                                        libcanberra-gtk-module \
                                        gtk2-engines \
                                        gtk2-engines-*

apt-get -y install --reinstall overlay-scrollbar-gtk2 \
                                gtk2-engines-murrine

# Install Visual Studio Code and relevant extensions
cd /
mkdir vscode && cd vscode && wget -O code_amd64 https://go.microsoft.com/fwlink/?LinkID=760868
dpkg -i code_amd64
code --install-extension ms-vscode.cpptools --user-data-dir='/vscode/'
code --install-extension vector-of-bool.cmake-tools --user-data-dir='/vscode/'
code --install-extension ms-python.python --user-data-dir='/vscode/'
rm code_amd64

컨테이너를 만든 후 --nv플래그를 사용하여 컨테이너에 삽입합니다. 그러나 이렇게 하면 code . -sVisual Studio Code GUI가 표시되지 않고 , Gtk-Message: Failed to load module "unity-gtk-module"bus.cc(427)] Failed to connect to the bus: Failed to connect to socket /var/run/dbus/system_bus_socket: No such file or directory와 같은 오류가 표시됩니다 dconf-CRITICAL **: unable to create directory '/run/user/1000/dconf': Permission denied. dconf will not work properly.. 실행이 glxgears예상대로 작동하고 기어가 작동 중임을 표시한다는 점을 언급해야 합니다 .

sudo(거의 항상 피해야 하는)을 사용하면 특이점 컨테이너로 이동하여 실행하면 오류 code -s --user-data-dir=''만 발생하고 ERROR:browser_main_loop.cc(279)] Gtk: cannot open display: :0다른 경고/오류는 사라집니다. glxgrears유사한 오류가 표시됩니다. 컨테이너에 포격할 때 표시된다는 Error: couldn't open display :0사실에도 불구하고echo $DISPLAY:0그리고그리고아니요 sudo.

Docker 또는 Singularity를 ​​사용하여 GUI로 VS Code를 올바르게 실행하는 방법을 알고 싶습니다. 인터넷에서 검색한 결과 Singularity에서 GUI를 사용하여 애플리케이션을 실행하는 데 필요한 모든 모듈을 설치하고 있다고 확신합니다. 그런데 왜 VS Code에서는 이런 일이 발생하지 않습니까? 누구든지 무슨 일이 일어나고 있는지에 대한 단서를 제공하거나 Singularity 컨테이너를 사용할 때 GUI를 실행하는 방법에 대한 솔루션을 제공할 수 있습니까?

답변1

저도 같은 문제를 겪고 있습니다. vscode/Electron에는 udev/dbus 및 /run/user...에 대한 액세스가 가능하다고 가정하는 "물건"이 많이 있는 것 같습니다.

나는 바인드 명령을 사용하여 이 문제를 해결했습니다. 이것이 어리 석거나 위험한 경우 소리를 지르십시오. 그러나 이것이 현재 vscode를 시작하는 방법입니다.

singularity run --nv -B /run/user/$(id -u):/run/user/$(id -u) vscode.simg

관련 정보