10
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Docker for Macを使ってFirefoxをコンテナ化してみる

Last updated at Posted at 2016-04-12

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ではうまくいかないみたいです。時間がある時にまた調べてみますが、やり方を知っている方(あるいは見つけた方)はコメントを下さい。よろしくお願いします。

参考にしたリンク

10
10
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
10
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?