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でも起動させてみましょう!