packageオプションを使うことで、動作している仮想マシンのイメージファイルを、Boxファイルとして保存することができます。
素のCentOSのBoxファイルから作成・構築した仮想マシンを、Boxファイルとして保存しておけば、仮想マシンに何か問題があった場合や、同じ環境を作りたい場合に、便利だと思います。
環境
- Windows 10 1803
- VirtualBox 6.0.4
- Vagrant 2.2.4
Boxファイルの作成
sample-vm という仮想マシンのBoxファイルを作成する想定で、操作方法を見てみましょう。
対象の仮想マシンを止める
仮想マシンが起動している場合は、まず停止しましょう。
$ vagrant status Current machine states: sample-vm running (virtualbox) This environment represents multiple VMs. The VMs are all listed above with their current state. For more information about a specific VM, run `vagrant status NAME`. $ vagrant halt sample-vm ==> sample-vm: Attempting graceful shutdown of VM... $ vagrant status Current machine states: sample-vm poweroff (virtualbox) This environment represents multiple VMs. The VMs are all listed above with their current state. For more information about a specific VM, run `vagrant status NAME`.
Boxファイルを作成する
仮想マシンからBoxファイルを作成します。
使用するコマンドは以下の通りです。
$ vagrant package "仮想マシン名"
コマンドを実行して、package.box というファイルが生成されていればOKです。
以下の例では、「sample-vm」という仮想マシンのBoxファイルを生成しています。
$ vagrant package sample-vm ==> sample-vm: Clearing any previously set forwarded ports... ==> sample-vm: Exporting VM... ==> sample-vm: Compressing package to: c:/Vagrant/********/package.box $ ls -l -rw-r--r-- 1 130351019 1049089 753968010 8月 24 12:12 package.box
生成されるBoxファイルのファイル名を指定したい場合は、以下のように--nameオプションを指定しましょう。
$ vagrant package sample-vm --name ファイル名
Boxの登録
Boxファイルを作成したら、Vagrantで認識できるよう登録します。
コマンドは以下の通りです。
$ vagrant box add 登録時に認識させる名前 登録するBoxファイル
以下の例では、「package.box」というBoxファイルを「sample-vm」という名前で登録しています。
$ vagrant box list bento/centos-6.7 (virtualbox, 2.2.7) bento/centos-7.4 (virtualbox, 201803.24.0) centos/6 (virtualbox, 1902.01) centos/7 (virtualbox, 1902.01) $ vagrant box add sample-vm package.box ==> box: Box file was not detected as metadata. Adding it directly... ==> box: Adding box 'sample-vm' (v0) for provider: box: Unpacking necessary files from: file://c:/Vagrant/********/package.box box: Progress: 100% (Rate: 311M/s, Estimated time remaining: --:--:--) ==> box: Successfully added box 'sample-vm' (v0) for 'virtualbox'! $ vagrant box list bento/centos-6.7 (virtualbox, 2.2.7) bento/centos-7.4 (virtualbox, 201803.24.0) centos/6 (virtualbox, 1902.01) centos/7 (virtualbox, 1902.01) coreos-alpha (virtualbox, 2121.0.0) sample-vm (virtualbox, 0)
登録したBoxファイルは、以下のフォルダに保存されます。
C:\Users\ユーザ名.vagrant.d\boxes
使い方
作成したBoxを使って仮想マシンを立ち上げるには、通常通り初期化、起動の流れで問題なしです。
$ vagrant init sample-vm $ vagrant up sample-vm