Windows で Boot2Docker が動かなかったら MacType が悪さしてるかも
ま た で す か
という訳で連日 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
がこれ見よがしにエラーになってるので、これをキーに色々ググって出てきたのが
だったんですが、ここに書かれてること、例えば 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 直接叩いてます。こっちの方が多機能で便利でおすすめですよ :)