Vagrant打包:如何将更改保存到新的虚拟机镜像中

11
我的问题与这里有关,但我无法使它工作。
我使用来自vagrantbox.es的预制vagrant box (http://goo.gl/KwQSa2) ,并希望进行一些更改,然后将新的虚拟机打包成新的vagrant box文件。
为了获得初始的box,我在我的vagrant文件中添加了config.vm.box_url = "http://goo.gl/KwQSa2"
调用vagrant up之后,我执行vagrant ssh,然后进行一些操作(例如touch testfile.txt)。
注销后,我使用vagrant package创建package.box
然后我执行vagrant destroy,将package.box的路径添加到我的vagrant文件的config.vm.box_url中,然后再次执行vagrant up.
当我登录到VM时,我的testfile.txt不在那里,所以看起来好像我打包的是未更改的box。
我尝试了其他一些方法,如vagrant box repackage, 但都没有成功。我错过了什么?
1个回答

23

当你打包时,必须根据基础镜像指定新创建的虚拟机的UUID(由vagrant up创建)。

注意:如果您使用VirtualBox,它会创建一个名为base_box_name-default-UUID的新虚拟机。

运行以下命令:

vagrant package --base NAME --output /path/to/name.box

--base NAME中的name应该是新虚拟机的名称或其UUID。您可以使用以下命令获取它:

$ VBoxManage list vms
"oracle65" {5f9e6136-7773-4cd5-99a1-3a66b5e48045}
"Ubuntu" {e8c5a28c-788d-4d57-8c4a-c1f032a02443}
"oracle510" {fed5f379-495e-4b4b-b4e2-24f98edd2e72}
"archlinux" {c79dcee9-a523-4300-b026-cbc93ad37062}
"Windows" {fa768a76-5710-4b07-a4df-cc388370f038}
"Wiki" {a50ce314-6af8-4633-b02e-82b765cbf401}
"openSUSE" {af3cdf13-7e00-4c24-ae52-423919359b18}
"Debian" {37680776-73b9-44fd-8348-f60fd3895624}
"Solaris" {bc7be4ab-293d-4c94-b591-b5445a954f6c}
"centos_default_1395637517620_29337" {03d1282a-c7ba-493b-91ad-ec26ed763b6c}
"Kubuntu" {787ce012-00ef-4f90-acda-1b65c6d9941b}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接