Windows で Boot2Docker が動かなかったら MacType が悪さしてるかも

ま た で す か

kendik.hatenablog.com

という訳で連日 MacType の話で恐縮というか、ほんと勘弁してくれという話なんですが、裏側が VirtualBox だからしょうがないね。面倒ですねぇ。

他に困ってる方いないんですかね? Windows で使わねーよって話でしょうか。MacType はもう使われてないって可能性の方が高いな。。。

現象と解決

Boot2Docker (on Windows) をインストールしてショートカットから起動しようとすると、コンソールが音も立てずに落ちるという事象に見舞われました。

別途コンソールを起動して exe を叩けばログが見れるので試してみたところ、

kumake:Boot2Docker for Windows> .\boot2docker.exe -v up
Boot2Docker-cli version: v1.5.0
Git commit: ccd9032
2015/04/08 19:51:21 executing: C:\Program Files\Oracle\VirtualBox\VBoxManage.exe showvminfo boot2docker-vm --machinereadable
2015/04/08 19:51:22 executing: C:\Program Files\Oracle\VirtualBox\VBoxManage.exe guestproperty set boot2docker-vm /VirtualBox/GuestAdd/SharedFolders/MountPrefix /
2015/04/08 19:51:22 executing: C:\Program Files\Oracle\VirtualBox\VBoxManage.exe guestproperty set boot2docker-vm /VirtualBox/GuestAdd/SharedFolders/MountDir /
2015/04/08 19:51:22 executing: C:\Program Files\Oracle\VirtualBox\VBoxManage.exe sharedfolder add boot2docker-vm --name c/Users --hostpath C:\Users --automount
VBoxManage.exe: error: Shared folder named 'c/Users' already exists
VBoxManage.exe: error: Details: code VBOX_E_OBJECT_IN_USE (0x80bb000c), component SessionMachine, interface IMachine, callee IUnknown
VBoxManage.exe: error: Context: "CreateSharedFolder(Bstr(name).raw(), Bstr(hostpath).raw(), fWritable, fAutoMount)" at line 1008 of file VBoxManageMisc.cpp
2015/04/08 19:51:22 executing: C:\Program Files\Oracle\VirtualBox\VBoxManage.exe setextradata boot2docker-vm VBoxInternal2/SharedFoldersEnableSymlinksCreate/c/Users 1
2015/04/08 19:51:22 executing: C:\Program Files\Oracle\VirtualBox\VBoxManage.exe startvm boot2docker-vm --type headless
Waiting for VM "boot2docker-vm" to power on...
VM "boot2docker-vm" has been successfully started.
error in run: Failed to start machine "boot2docker-vm": exit status 1

こんなエラーが。

Shared folder named 'c/Users' already exists がこれ見よがしにエラーになってるので、これをキーに色々ググって出てきたのが

github.com github.com

だったんですが、ここに書かれてること、例えば ssh の config を修正してみたりしてもなんの反応もなく。

煮詰まってたとこで、「あれ?裏側は VirtualBox だから MacType じゃね?」と思ってサービスを止めたところ

kumake:Boot2Docker for Windows> .\boot2docker.exe -v start
Boot2Docker-cli version: v1.5.0
Git commit: ccd9032
2015/04/08 23:11:20 executing: C:\Program Files\Oracle\VirtualBox\VBoxManage.exe showvminfo boot2docker-vm --machinereadable
2015/04/08 23:11:20 executing: C:\Program Files\Oracle\VirtualBox\VBoxManage.exe showvminfo boot2docker-vm --machinereadable
2015/04/08 23:11:20 executing: C:\Program Files\Oracle\VirtualBox\VBoxManage.exe showvminfo boot2docker-vm --machinereadable
Waiting for VM and Docker daemon to start...

<中略>

Docker client does not run on Windows for now. Please use
    "C:\Program Files\Boot2Docker for Windows\boot2docker.exe" ssh
to SSH into the VM instead.

動きましたー。

ほんとまいった。いつものように MacType の除外設定に放り込みましょう。前回 VM が起動しなかった件は VirtualBox.exe を除外しましたが、今回は VBoxSVC.exe を除外します。

ただ、VBoxSVC.exe は起動に失敗するとすぐ落ちちゃうので MacType のプロセスエクスプローラだと除外が難しいので ini を直接編集しましょう。C:\Program Files (x86)\MacType\ini 配下にある利用している ini を開いて

[UnloadDll]
VBoxSVC.exe

で OK です。

余談

そういえば結局 Shared folder 云々のエラーって一度起動に失敗すると次回以降出るようになるってだけなんですね。VirtualBox 立ち上げて VM の設定から共有フォルダ削除したら消えました。Boot2Docker は起動しませんでしたけどね。

あと、ショートカットから Boot2Docker を起動させるとコマンドプロンプトが起動するんですねー。色々不便なので ConEmu で常に開いている PowerShell コンソールから exe 直接叩いてます。こっちの方が多機能で便利でおすすめですよ :)

kendik.hatenablog.com