docker で GUI を使いたい

この記事は1年以上前に書かれたものです。 情報が古い可能性があります。

docker on mac で python の勉強をしてたのですが,GUI アプリを作りたくなりました.

しかしながら,docker で直接 GUI 環境は使えないため,方法を調べます.
おそらく以下の 3 通りのどれかでできる.

1.ホストの Xwindow ソフトウェアにコンテナの GUI を出力する.
2. X11 転送の SSH で接続する.
3. コンテナ内に VNC サーバを立てて,ホストからアクセスする.

最初は 1 でやりたかったけど,あまりに複雑だったため断念(´-ω-`)
一番シンプルなのが 1 だと思ったのだけれど,ホストが Linux ならともかく,mac の場合どうなってるのかほとんど出ていなかった.

特にこだわりがあるわけではないので簡単なのにしようと思って探すと VNC が楽そうだという結論.
幸い OSX には VNC クライアントが標準であるので,これでやってみることに.

http://int128.hatenablog.com/entry/2014/11/27/233933
を参考に作業.思ったよりもずっと簡単だった.

ポイントとしては vnc のポート 5901 を docker run の時に -p 5901 で指定すること.
あとは中のコンテナに以下をインストールするだけ.

  1. VNC サーバ
  2. GUI 環境(今回は xfce)
  3. 必要な場合は日本語環境

コンテナの作成

まずはコンテナを作成する.今回はもともとあったやつを使ったが,ポートを転送するため docker run から起動する.

docker run -p 5901:5901 -it ubuntu:latest /bin/bash

ソフトのインストール

上のコマンドでコンテナ内に入っているはずなので,そのまま以下のコマンドを実行.

apt-get update
apt-get install xfce4 tightvncserver language-pack-ja fonts-vlgothic

export USER=root
export LANG=ja_JP.UTF-8

vncserver :1 -geometry 1360x768 -depth 24

最後の vncserver :1 -geometry 1360×768 -depth 24 で vnc サーバを起動します.
geometry のところで画面解像度,depth で画面カラーのビット数を指定しています.

あとは mac から Finder > 移動 > サーバへ接続 を選択.

vnc://localhost;5901


パスワード入力.

接続すると自動で画面が表示される.

とりあえず以上で目的は達成.

すでにあるコンテナ使ったため commit して run しなおすのが少しめんどくさいけど...

コメント

タイトルとURLをコピーしました