LoginSignup
12
17

More than 5 years have passed since last update.

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

Last updated at Posted at 2016-08-09

参考

環境

  • 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
12
17
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
17