boot2dockerの仮想マシンディスクを外部ディスクに移動する
ここ最近、Macのboot2dockerを使っているのですが、MacBook Airのディスクを圧迫し始めて、なかなかつらい状況になってきました。そこで、boot2dockerが使っている仮想マシンディスクなどを外部のディスク(USBメモリ)に移動する事にしました。
移動する前のファイルの構成は以下の様になっていました。
- ~/.boot2docker (boot2dockerが使う仮想マシンディスクのデフォルトの保存先)
- boot2docker-vm.vmdk (10GBくらい)
- boot2docker.iso (24MBくらい)
- ~/VirtualBox\ VMs/boot2docker-vm (boot2dockerのVirtualBoxの仮想マシン)
boot2dockerを停止
boot2dockerが起動している場合、停止しておきます。
$ boot2docker stop
VirtualBoxに登録されている仮想マシンを除去
最初に、boot2docker-vmの除去しておきます。(ファイルの削除は行わずに)
仮想マシンディレクトリを外部ディスクに移動
~/VirtualBox\ VMs/boot2docker-vmを外部ディスク(外部ディスクは/Volumes/vmにマウントしている前提で話を進めます)に移動します。
$ mkdir /Volumes/vm/virtualbox
$ mv ~/VirtualBox\ VMs/boot2docker-vm /Volumes/vm/virtualbox
仮想マシンディスクとISOファイルを外部ディスクに移動
$ mkdir /Volumes/vm/boot2docker
$ mv ~/.boot2docker/boot2docker-vm.vmdk ~/.boot2docker/boot2docker.iso /Volumes/vm/boot2docker
boot2dockerの設定ファイルを追加
仮想マシンディスクとISOの場所を以下のようにprofileファイルに記述します。(この変更、今回のように途中から場所を移動する場合(boot2docker init
をしたあと)にはあまり意味がなさそうですが、忘れないように書いておきます。)
vim ~/.boot2docker/profile
VM_DISK=/Volumes/vm/boot2docker/boot2docker-vm.vmdk
BOOT2DOCKER_ISO=/Volumes/vm/boot2docker/boot2docker.iso
boot2docker-vmをVirtualBoxに追加し直す
移動したboot2docker-vmをVirtualBoxに追加し直します。メニューの「仮想マシン」>「追加」から移動した仮想マシンディレクトリのvboxファイル(/Volumes/vm/virtualbox/boot2docker-vm/boot2docker-vm.vbox)を指定します。
boot2docker-vmの設定変更
VirtualBoxのboot2docker-vmの設定画面の「ストレージ」を開くと以下のようにエラーとなっています。
ISOファイルは上記画像の矢印の箇所から、移動先のISOファイル(/Volumes/vm/boot2docker/boot2docker.iso)を選択し直します。仮想マシンディスク(boot2docker-vm.vmdk)もISOファイルの様に変更すればいいのですが、「Cannot register the hard disk … UUID … already exists.」というエラーになってしまいます。
そこで以下のコマンドを実行してUUIDを変更します。
$ VBoxManage internalcommands sethduuid /Volumes/vm/boot2docker/boot2docker-vm.vmdk
UUID changed to: d246c26a-ca03-4fc3-9de4-19f06d696ebe
※ 参考 – VirtualBoxで仮想diskのUUIDを変更する
その後、もう一度、boot2docker-vm.vmdkを選択しなおすとエラーなく変更することが出来ます。
boot2dockerを起動してみる。
$ boot2docker start
$ docker
$ export DOCKER_HOST=tcp://127.0.0.1:4243
$ docker version
バージョン情報まで正しく表示されれば完了です。
最後に
今回、使った外部ディスクは以下のUBSメモリになります。書き込み、読み込み速度が速そうなものを選んでみました。まだ、あまり使ってないのですが、MacBook Airのディスクを使っていた頃とそんなに変わらないのじゃないかと思います。しばらく使ってみて、問題があればまた報告したいと思います。
<div class="amazlet-powered-date" style="font-size:80%;margin-top:5px;line-height:120%">
posted with <a href="http://www.amazlet.com/" title="amazlet" target="_blank">amazlet</a> at 14.04.07
</div>
</div>
<div class="amazlet-detail">
A-DATA <br />売り上げランキング: 1,527
</div>
<div class="amazlet-sub-info" style="float: left;">
<div class="amazlet-link" style="margin-top: 5px">
<a href="http://www.amazon.co.jp/exec/obidos/ASIN/B007YXA5SI/hironemu-22/ref=nosim/" name="amazletlink" target="_blank">Amazon.co.jpで詳細を見る</a>
</div>
</div>
あと、ちなみに、boot2docker init
する前であれば、~/.boot2docker/profileにVM_DISK等を設定しておけば、今回の様な面倒な作業は必要無いのかも知れません。 [このスクリプト][3]を見る限りなんとなくそんな気がしますが、試していないので、試す機会があればまた追記しておきます。