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 . -s
Visual 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