参考
環境
- 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