docker
VSCode
VisualStudioCode

Dockerコンテナ上でVSCodeを動かしてMacで表示する

More than 1 year has passed since last update.

参考

環境

  • OS X EI Capitan 10.11.6
  • Docker for Mac 1.12.0-beta21
  • XQuartz 2.7.10 beta 2

1. 環境構築

1.1 XQuartzのインストール

普通は以下のようにインストールする。

$ brew cask install xquartz

しかし、これでインストールされるXQuartz2.7.9にはバグがあって上手くいかない。
そのため、XQuartzから2.7.10 beta 2をインストールする。

次に、以下のコマンドでXQuartzを起動する。

$ open -a XQuartz

起動後、XQuartzの設定画面(X11 Preference)から、
Securityタブを選択し、

- Authenticate connections
- Allow connections from network clients

にチェックを入れる。
ここまでで設定を反映させるため、ログアウトして、入り直す。

1.2 Docker for Macのインストール

Docker for Macからインストールする。

2. Dockerイメージの作成

2.1 準備

linux 64bitのVSCodeの公式Zip Archiveをダウンロードする。
公式のものには、libnotify.so.4が入っていないため、他のアーカイブをダウンロードする。
他のアーカイブを解凍すると、libnotify.so.4がある。
公式アーカイブとlibnotify.so.4をDockerfileと同じディレクトリにおくようにする。

2.2 Dockerfile

今回はubuntuで動かします。やっていることは、

  • VSCodeを起動するための色々のインストール
  • zipのインストール
  • ユーザーの追加(VSCodeはrootでは動かない)
  • コンテナにVSCode公式アーカイブとlibnotify.so.4を入れる
  • 公式アーカイブの解凍とlibnotify.so.4の移動
  • コンテナを動かし続けるための呪文
# Dockerfile
From ubuntu:14.04

RUN apt-get update && apt-get install -y libgtk2.0-0 libgconf2-4 \
    libnss3 libasound2 libxtst6 libcanberra-gtk-module libgl1-mesa-glx \
    zip

RUN useradd -ms /bin/bash me

ADD ./VSCode-linux-x64-stable.zip /home/me
ADD ./libnotify.so.4 /home/me

WORKDIR /home/me
RUN unzip VSCode-linux-x64-stable.zip
RUN mv libnotify.so.4 VSCode-linux-x64


CMD ["/bin/bash"]

2.3 イメージの作成

Dockerfileと公式アーカイブ、libnotify.so.4があるディレクトリで以下を実行。

$ docker build -t (イメージ名) .
#例 docker build -t vsc .

以下のコマンドでイメージができているか確認可能

$ docker images

3. 実行

xquartzを起動する。

$ open -a XQuartz

MacのターミナルでIPアドレスを調べて、以下のコマンドを打つ。

$ xhost + ip
#例 xhost + 10.8.0.111

先ほどのイメージを使ってコンテナを立ち上げる

$ docker run -ti -e DISPLAY=ip:0 (イメージ名)
#例 docker run -ti -e DISPLAY=10.8.0.111:0 vsc

コンテナの中で、ユーザーをmeに切り替え、VSCodeを実行する。

$ su me
$ cd ~/VSCode-linux-x64/bin
$ ./code

その他

以下のコマンドはログアウトor再起動したらやり直す必要がある?

$ xhost + ip