Singularityコンテナを使用すると、GUIを介してVisual Studio Codeを実行できない:gtk、dbus、およびdconfエラーが発生する

Singularityコンテナを使用すると、GUIを介してVisual Studio Codeを実行できない:gtk、dbus、およびdconfエラーが発生する

Ubuntu 16.04を実行しているラップトップに他のソフトウェア(Blender)への依存関係の多くをインストールしたくない場合。そこで、私はこれらのコンテナを介して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

おすすめ記事