Docker for Macでxclockを表示する

Docker for Macのコンテナにxclockを入れて、MacOS上にxclockを表示します。

ついでに、そのイメージをDockerfileにして、いつでもコンテナ生成できるようにします。

必要なもの

ググるといろいろヒットしますが、”socat”使ったり、”/tmp/.X11-unix”を共有ディレクトリにしたり、で混乱しましたが、”Running Graphical applications in Docker for Mac“が参考になりました。

やり方は下記3つのようです。

  • プロキシを使うやり方(“socat”)
  • プロキシを使わず、認証しないやり方
  • プロキシを使わず、認証するやり方

で、セキュリティ的にはよろしくないですが、簡易なプロキシを使わず、認証しないやり方で実現します。

必要なソフトは”Xquartz”だけです。

Xquartzのインストール

Xquartzから最新をダウンロードしてインストールしてください。

2018/8/20時点で最新は2.7.11ですが、このバージョンだとDocker for Macで動かないようなので、2.7.10をインストールしてください。

まずは手動でubuntu:18.04からコンテナを作る

X11 in docker on macOSの投稿を参考に動かしていきます。

Xquartzの設定

まず、Xquartzを起動します。

$ open -a XQuartz
  • Xquartzをドックから選んで、環境設定のセキュリティで「ネットワーク・クライアントからの接続を許可」にチェックを入れます。
  • また、「接続を認証」のチェックを外します。

再起動しないと反映しないので、Xquartzします。
下記画像は「接続を認証」にチェックが入っていますが外してください!!

Xquartz

.bashrc

コマンド叩いてもよいですが、下記を.bashrcに記述します。

export DISPLAY_MAC=`ifconfig en0 | grep "inet " | cut -d " " -f2`:0
defaults write org.macosforge.xquartz.X11 nolisten_tcp -boolean false

function startx() {
    if [ -z "$(ps -ef|grep XQuartz|grep -v grep)" ] ; then
        open -a XQuartz
    fi
}

コンテナを生成

下記のように、環境変数DISPLAYとX11-unixの共有ディレクトリを指定してコンテナを生成します。

$ docker container run -it -e DISPLAY=${DISPLAY_MAC} ubuntu:18.04

xclockを起動

updateしてxclockのパッケージx11-appをインストールして、xclockで起動できます。

# apt-get update
# apt-get install -y x11-apps
# xclock

xclock

うまく起動できました。

と言いつつ、コンテナ作るときのDISPLAYを「DISPLAY=${HOSTNAME}:0」のはずが、「DISPLAY=${DISPLAY}:0」とか間違えてしまって、3回くらいコンテナ作り直しました。

Dockerfileを作る

再利用はしませんが、勉強のため、ここまでのxclock表示のイメージを作ります。

Dockerfile

先程のコンテナ内での作業をDockerfileへ書き込みます。

FROM ubuntu:18.04
MAINTAINER crz33 <crz33.com>
RUN apt-get update && apt-get install -y \
  x11-apps
CMD xclock

build

名前をつけてbuildします。タグつけるの忘れました。

$ docker image build -t crz33/xclock .

コンテナ生成・起動

作成したイメージを使ってコンテナrunします。
引数は固定なので、Dockerfileへ書き込んでも良いかもしれません。

$ docker container run -it -e DISPLAY=${DISPLAY_MAC} crz33/xclock

Dockerまとめ記事へのリンク

Dockerの他のネタを纏めています。参考になれば嬉しいです。

↓↓↓Dockerまとめページはこちら↓↓↓
【保存版】Dockerまとめ

シェアする

  • このエントリーをはてなブックマークに追加

フォローする