合理主義的グルメブログ

学生起業家の日常をツラツラと書いています。主に食事情報です。

Mac DockerでGUIを使いたい(XQuartz版)

Dockerを使って,GUIのアプリケーションを利用する際には,いくつか方法があります.

VNCを使うと,どの端末からでもブラウザ経由で,GUIを操作することができますが,
今回はXQuartzでやってみたいと思います.

XQuartzを使用して,コンテナ内でDISPLAY変数を設定できるようにします.
これによって,ホスト側にGUI画面を表示させることができます.

Dockerはインストール済み前提で,話を進めます.

XQuartzインストール

homebrewを使って,サクッとインストールしていきます.

$ brew cask install xquartz

XQuartzの設定

早速,XQuartzを実行してみます.

$ open -a XQuartz

これでXQuartzというGUIアプリが,ホスト側Macに表示されます. 僕は英語版を利用しているので,Preference > Securityから, 「Allow connections from network clients」にチェックを入れます. 日本語だと,設定 > セキュリティ,「ネットワーククライアントからの全ての接続を許可」とかかな.

ホスト側のIPアドレス

XQuartzが起動したら,ターミナルでxhostコマンドを使って,ホスト側のIPアドレスを登録します.

$ IP=$(ifconfig en0 | grep inet | awk '$1=="inet" {print $2}')
$ echo $IP
192.168.XXX.XXX
$ xhost + $IP
192.168.XXX.XXX being added to access control list

もし,xhostコマンドが見つからなくても,焦らずに以下のように実行しましょう.
ただパスが通ってないだけです.

$ /usr/X11/bin/xhost + $IP

DockerからFirefoxを起動

早速,DockerでGUIを利用してみます.
コマンドは簡単です.

$ docker run -d --name firefox -e DISPLAY=$IP:0 -v /tmp/.X11-unix:/tmp/.X11-unix jess/firefox

無事起動しましたか?
次回はROSでも起動させてみましょう!