docker上で起動してるGUIアプリをWindows上で操作したい
仮想マシンならVMware Playerは「Unityモード」、Sun VirtualBoxは「シームレスモード」を使ってゲストOS上で実行されているGUIアプリケーションをWindows上で表示されている”風”に操作することができますが、dockerではそういうわけにはいきません。ではどうするか。もうあれしかないですね。X11フォワードです。
用意するもの
Windows上で必要なのは【学習基盤としてのDocker】Dockerでとっかかろう の記事のままです。
- boot2docker
- MovaXterm
MovaXtermがXサーバーになれるのが便利便利。
手軽に試せるDockerイメージ
2個見つけました。
手順:
- MovaXtermでboot2dockerに接続した状態で
docker run -d -p 6080:6080 -p 2233:22 dorowu/ubuntu-desktop-lxde-vnc
でコンテナ起動 - 起動してもsshが動いてないので
docker exec [コンテナ名] service ssh restart
- 更にMovaXtermで下図の通り接続を追加します。これでboot2dockerのポート2233を経由して1.のコンテナのポート22に接続できます。この時の"Remote host"はboot2dockerのIPです。前回記事のようにlocalhostでも繋がるようにもできますけどboot2dockerの上げ下げが面倒くさかった。
- 接続する時に訊かれるパスワードは"ubuntu"です。
- 接続できたら
gnome-www-browser
と叩いてみましょう。Firefoxが立ち上がります。yahoo.co.jpとかにアクセスしてみればいつもと違うフォントで表示されるのが分かりますね。
ちなみにこのDockerイメージ、Windows上から http://[boot2dockerのIP]:6080/vnc.html でデスクトップ画面も見えます。というかそっちがこのイメージの本筋です
もうURLの時点でバレバレですね。そうですアレです。これは実は「Dockerを用いたGUIアプリケーションの実行」のDockerイメージですが、ホストがLinuxでないと記事通りに行かないので少々手を加えます。
手順:
- まずコンテナを
docker run -it -p 2323:22 fgrehm/netbeans:v8.0.1 bash
で起動。 - そもそもsshが入っていないので
sudo sh -c "apt-get update && apt-get -y install ssh && service ssh restart"
- ssh接続ユーザとして"developer"が使えるのですがパスワードが無い為
sudo passwd developer
で適当なパスワードを入れます。 - 接続準備が出来たので上記と同じくMovaXtermでboot2dockerのIPに、今度はポート2323にユーザ"developer"で接続します。
-
/usr/local/bin/netbeans
でNetBeansが起動します!