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