at backyard

Color my life with the chaos of trouble.

Dockerを使ってmacからwindowsアプリに触る

ちょっとした好奇心でmacからwindowsアプリに触れてみたくなった。

これはそんな備忘録であり、とりあえず試してみた的なメモとなっている。

Dockerでwineを動かす

こちらのリポジトリを使わせてもらった。感謝。

github.com

なお、こちらのREADMEにも書かれている通り、GUIアプリを起動しないのであれば、これ単体で良いが、もしGUIを起動させたいなら下記のコンテナと組み合わせる必要がある
(同じ開発者が作っている。)

github.com

こちらはVNC Server(X11vnc)と連携してフレームバッファ付きX11 server(Xvfb)を提供するサービスコンテナとのことで、正直ここらへんは詳しくないのだが、どうやら

  • x11vncはVNCサーバー
  • xvfbは、ディスプレイハードウェアや物理的な入力デバイスを持たないマシン上で動作する X サーバ

ということのようだ。
後でちゃんとさらっておきたいところなので、下のドキュメントを後で読んでみようと思い、こちらにもメモする。

X11vnc - ArchWiki

XVFB

今回はwindowsアプリを GUI で触ってみたいと考えているので、上の2つのリポジトリを触っていくことにする。

Docker image作成

というわけで、まずはdocker imageの作成から。
どちらも git pull してローカルでビルドしていく。

wineのdocker image

suchja-wine というタグでビルドしている。

git clone https://github.com/suchja/wine.git
cd wine
docker build -t suchja-wine .

x11serverのdocker image

suchja-x11server というタグでビルドしている。

git clone https://github.com/suchja/x11server.git
cd x11server
docker build -t suchja-x11server .

ビルドは以上となる。

x11serverとwine、それぞれのdocker コンテナを起動させる

コンテナの起動は下記の通り。
VNC_PASSWORD=newPW というのがVNCで接続したときに使用するパスワード

# x11server起動
docker run -d --name display -e VNC_PASSWORD=newPW -p 5900:5900 suchja-x11server:latest

# wineを起動
docker run --rm -it --link display:xserver --volumes-from display suchja-wine:latest /bin/bash

macのfinder上で command + k自身のIPアドレス:5900 を入力し、上のパスワードを入れると、黒い画面に接続される。
これで接続自体はOK

あらかじめwineを動かしているコンテナ内で下記のコマンドを実行していく必要がある

# wine初期化
wine wineboot --init

# バージョンを表示してみる
wine --version

# メモ帳を起動してみる
wine notepad.exe

これでメモ帳が起動する

f:id:shinshin86:20200527224523p:plain

ちなみにこのやり方で起動した場合、アプリのタイトルバーなどが表示されない。
(ウィンドウを閉じるボタンがついている部分)

このDocker imageには winegui というエイリアスが用意されており、これはいくつかの引数を渡してwineを起動する。
これを実行することでタイトルバーなどが表示された形でwindowsアプリが起動できる。

winegui notepad.exe

閉じるための x ボタンなどが表示されているのが分かる。

f:id:shinshin86:20200527224550p:plain

ちなみに上の winegui の実際のコマンドの内容は下記のようだ

alias winegui='wine explorer /desktop=DockerDesktop,1024x768'

色々と知らないことに触れられて楽しかった。