はじめに
これまで,DockerでGUIを使う方法としてContainer内でVNCサーバを立ち上げる方法が使っていましたが,やはり使い勝手が悪いです.
X Window関連のテクニックを使うことでContainer内のwindowをホスト側で描画できることは知っていたのですが,なんとなく面倒そうだったので使ってきませんでしたが,意外と簡単に出来たのでメモしておきます.
ここではホスト(手元でGUIを操作できる端末)がUnix (Ubuntu)の場合です
開発用なのでセキュリティは気にしません
ホスト側の準備
下記のコマンドでX Windowサーバが,Container内からの接続を受け入れるように設定します.ユーザ権限で構いません.
$ xhost local:
セキュリティ的にはあまりよろしくないらしい.取り消す場合は
$ xhost -local:
現在の設定状況は以下で確認できます.
$ xhost
コンテナの起動
起動時にマウントオプションと環境変数を渡します
-v /tmp/X11-unix:/tmp/X11-unix:rw -e DISPLAY=$DISPLAY
例えば
docker run -it -v /tmp/X11-unix:/tmp/X11-unix:rw -e DISPLAY=$DISPLAY ubuntu bash
これだけで例えばmatplotlibのGUIが表示できたりします.sshなどの新たなパッケージを導入する必要がないのでうれしいです.