LoginSignup
79
62

More than 5 years have passed since last update.

Docker コンテナ上で動く X11 アプリケーションのウィンドウをディスプレイに表示させる

Posted at

やりたいこと

  • Docker ホスト (Linux サーバ) の上で X11 アプリケーションのコンテナを動かす
  • 手元のノート PC (MacBook) から Docker ホストに接続して、コンテナとして動いている X11 アプリケーションのウィンドウを手元のノート PC のディスプレイに表示する

「なんでそんなことやってんだ」と思うかもしれないが、やりたくなったもんはしょうがない。

Docker ホストに X11 Forwarding しながら SSH 接続する

このあたりはググればいくらでも情報が出てくるのでサラッと。

  • Docker ホスト側の sshd_configX11Forwarding yes を設定する
  • Docker ホストに SSH 接続する際に -X オプションを付けるなどして X11 Forwarding を有効にする

X11 アプリケーションの Docker イメージを準備する

今回は簡単な例として xeyes が動くだけの Docker イメージを作る。

Dockerfile
FROM alpine

RUN apk --no-cache add xeyes

CMD ["/usr/bin/xeyes"]
$ docker build -t xeyes .

xeyes という名前の Docker イメージを作成できた。

X11 アプリケーションの Docker コンテナを起動する

コンテナを起動する際のポイントとしては以下の二点。

  • host ネットワーク (--net host) で起動することでディスプレイ ($DISPLAY) にアクセスできるようにする
  • X11 の認証情報 $HOME/.Xauthority をコンテナに共有する
$ docker run --rm -it \
    --net host \
    -e DISPLAY=$DISPLAY \
    -v $HOME/.Xauthority:/root/.Xauthority \
    xeyes

ちゃんと起動すれば、このようなウィンドウが手元の PC の画面に表示される。

79
62
1

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
79
62