Docker for Macのダウンロード・リンクが僕にも届きました。ローカルならではのことと言えばやっぱりGUIかな、ということでコンテナでFirefoxを起動する方法を調べてみました。
必要なソフトをインストールする
Homebrewがインストールされていることを前提に話を進めます。必要となるのはsocatとxQuartzで、どちらもHomebrewでインストールすることができます。
brew install socat
brew cask install xquartz-beta
Note: xquartzのベータ版をインストールしている理由は、Yosemite以降のOSではなんらかのバグがあってX11が立ち上がらないといったコメントを見かけて、それに関連したリンクを辿って行くと、ベータでは治ってるという書き込みがあったからです。リンクが古い可能性もあるので、今はベータでなくても問題ないのかもしれません。
Dockerfileを準備してFirefox用のイメージを作る
下記の参考リンクにあるものをそのまま使わせて頂きます。。。
FROM ubuntu:14.04
RUN apt-get update && apt-get install -y firefox
# Replace 1000 with your user / group id
RUN export uid=1000 gid=1000 && \
mkdir -p /home/developer && \
echo "developer:x:${uid}:${gid}:Developer,,,:/home/developer:/bin/bash" >> /etc/passwd && \
echo "developer:x:${uid}:" >> /etc/group && \
echo "developer ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/developer && \
chmod 0440 /etc/sudoers.d/developer && \
chown ${uid}:${gid} -R /home/developer
USER developer
ENV HOME /home/developer
CMD /usr/bin/firefox
Dockerfileを作ったらビルドします。
docker build -t firefox .
Firefoxを起動する
次に、別のターミナルを開いてフォアグラウンドでsocatをスタートさせます。
socat TCP-LISTEN:6000,reuseaddr,fork UNIX-CLIENT:\"$DISPLAY\"
そしてdocker run
でFirefoxを起動します。
docker run -ti --rm -e DISPLAY=192.168.64.1:0 \
-v /tmp/.X11-unix:/tmp/.X11-unix firefox
僕のMacだとDocker用のインターフェースのIPアドレスが192.168.64.1
だったのですが、もし違うという方があれば、適宜変更して下さい。うまく出来ていればUbuntuの見慣れたウインドウでFirefoxが開きます。Mac上でUbuntuのウインドウというのはなかなか違和感がありますが、ブラウジングのレスポンスはとても快適です。
最後にオチになりますが、音が出ません。。。
リンク先のコメントではpulseaudioを使って音声をリダイレクトする方法が紹介されていますが、Macではうまくいかないみたいです。時間がある時にまた調べてみますが、やり方を知っている方(あるいは見つけた方)はコメントを下さい。よろしくお願いします。