はじめに
VagrantからDockerに乗り換えるためにVirtualBoxのイメージをどうしてもDockerで動かしたく調べてみました。
VirtualBoxのイメージをDockerイメージに変換するには、まずVirtualBoxのイメージをDockerがサポートするフォーマットに変換する必要があります。その後、Dockerにイメージをインポートして、必要に応じて調整を加えることができます。
事前準備
変換には以下2つを利用しますので、事前にダウンロードしてください。MacでもWindowsでも変換できます。
QEMU
Docker Desktop
イメージ変換手順
VirtualBoxのイメージをDockerイメージに変換する手順です。すでにVMDKイメージになっている場合は、1)は省略してください。
1)VirtualBoxのVDI形式の仮想ディスクをVMDK形式に変換する手順です。
- まず、VirtualBoxで使用する仮想マシンをシャットダウンします。
- 次に、VirtualBox Managerを開き、変換したい仮想マシンを選択します。
- 右クリックして「設定」をクリックし、「ストレージ」タブを選択します。
- 「ストレージツリー」セクションで、変換する仮想ハードディスクを選択し、右側の「属性」アイコンをクリックします。
- 「属性」ダイアログボックスが開くので、「ポート」および「デバイス」フィールドを見て、そのディスクがどのポートとデバイスに接続されているかを確認します。この情報は、後で使用する必要があります。
- コマンドラインインターフェイスを開き、VirtualBoxのインストールフォルダに移動します。
- 次に、以下のコマンドを実行して、VMDKに変換します。
VBoxManage clonehd --format vmdk [path-to-virtual-hard-disk-file] [path-to-new-vmdk-file]
たとえば、デスクトップ上の「myvm.vdi」ファイルを「myvm.vmdk」という名前のファイルに変換する場合は、次のコマンドを実行します。
VBoxManage clonehd --format vmdk ~/Desktop/myvm.vdi ~/Desktop/myvm.vmdk
このコマンドは、変換したいVDIファイルのパスと、新しいVMDKファイルのパスを指定します。
以上の手順に従って、VirtualBoxで作成したVDI形式の仮想ディスクをVMDK形式に変換することができます。
2)VMDKファイルをDockerがサポートする形式に変換
VMDKファイルをRAWイメージに変換します。
qemu-img convert -f vmdk -O raw <vmdk-file> <raw-image-file>
ここで、 <vmdk-file>
には変換するVMDKファイルのパスを、<raw-image-file>
には出力するRAWイメージファイルのパスを指定します。
RAWイメージファイルをターアーカイブ形式に圧縮します。
tar -czvf <image-name>.tar.gz <raw-image-file>
ここで、 <image-name>
にはイメージの名前を指定します。
- 圧縮されたターアーカイブをDockerにインポートします。
docker image import <image-name>.tar.gz <image-name>:<tag>
ここで、 <image-name>
にはイメージの名前を、<tag>
には任意のタグ名を指定します。タグ名を指定しない場合は、 latest
が自動的に設定されます。
以上の手順を実行することで、VMDKファイルをDockerで使用可能なイメージ形式に変換して、イメージとしてDockerにインポートすることができます。