Estou tentando evitar a instalação de muitas dependências de outro software (Blender) no meu laptop executando um Ubuntu 16.04. Portanto, decidi criar um contêiner de Singularidade que tenha essas dependências para que eu possa compilar o Blender por meio desse contêiner. Então, meu objetivo é também ter o VS Code no contêiner, executá-lo visualmente, compilar o Blender na minha máquina localmente e fazer a depuração / edição de código, etc. Veja como eu construo meu contêiner com o VS Code instalado nele:
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
Depois de construir o container, eu o utilizo usando o sinalizador --nv
. No entanto, fazer code . -s
não mostra a GUI de código do Visual Studio e mostra vários erros, como 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
e dconf-CRITICAL **: unable to create directory '/run/user/1000/dconf': Permission denied. dconf will not work properly.
. É necessário mencionar que a execução de glxgears
funciona conforme o esperado e mostra as engrenagens sendo executadas.
Se eu fizer o shell em meu contêiner de singularidade usando sudo
(que eu deveria quase sempre evitar) e executar code -s --user-data-dir=''
, recebo apenas ERROR:browser_main_loop.cc(279)] Gtk: cannot open display: :0
como erro e os outros avisos / erros desaparecem. glxgrears
também mostra um erro semelhante: Error: couldn't open display :0
apesar do fato de echo $DISPLAY
mostrar :0
ao descartar no contêiner com e sem sudo
.
Então, pergunto-me, como posso executar corretamente o VS Code com GUI usando o Docker ou o Singularity? Fazer alguma pesquisa na Internet meio que me convenceu de que estou instalando todos os módulos necessários para poder executar um aplicativo com GUI em Singularity, mas por que isso não está acontecendo com o VS Code? Alguém pode me dar algumas dicas sobre o que está acontecendo e / ou fornecer uma solução sobre como eu posso executar a GUI ao usar um contêiner de singularidade.