当 vagrant box 在机器仍在使用的情况下被移除时会发生什么?
what happens when vagrant box is removed with a machine still using it?
我有大约 15 台流浪机器。这些机器使用 CentOS 和 Ubuntu 作为它们的 base boxes。当我 运行 vagrant box list
时,我得到以下输出
centos/7 (virtualbox, 1705.01)
centos/7 (virtualbox, 1706.02)
centos/7 (virtualbox, 1707.01)
centos/7 (virtualbox, 1708.01)
geerlingguy/centos7 (virtualbox, 1.2.3)
geerlingguy/ubuntu1604 (virtualbox, 1.1.6)
laravel/homestead (virtualbox, 3.0.0)
puppetlabs/centos-7.2-64-nocm (virtualbox, 1.0.1)
ubuntu/precise64 (virtualbox, 20170427.0.0)
ubuntu/trusty64 (virtualbox, 20170615.0.0)
ubuntu/trusty64 (virtualbox, 20170619.0.0)
ubuntu/xenial64 (virtualbox, 20170802.0.0)
ubuntu/xenial64 (virtualbox, 20170815.1.0)
ubuntu/yakkety64 (virtualbox, 20170202.0.0)
ubuntu/zesty64 (virtualbox, 20170412.1.0)
尝试 p运行e 时,我收到几条消息,提示某些框正在使用中,如果我删除该框,我的环境将被破坏。
如果我删除所有框,现有机器会怎样?
我通过使用 centos/7 - 1708.01 创建新机器进行测试。
- 已安装
whois
和 vim
- 在主文件夹中创建了一个虚拟文件。
- 停止机器
- 删除了
vagrant box remove centos/7 --provider virtualbox --box-version 1708.01
的框。
- 开始使用
vagrant up
并且机器启动没有任何问题。
它仍然有我安装的包和我创建的文件。
我用 ubuntu/xenial64
做了同样的测试。
- 使用最新的盒子版本创建了一台机器。
- 安装了新包并修改了几个文件。
- 停止机器
- 删除了 ubuntu/xenial64
的最新版本
- 再次启动机器
我仍然可以看到我安装的软件包和文件。
如果删除框不会影响现有机器,那么为什么会出现关于环境已损坏的消息?
我的理解是,在我使用盒子创建机器后,流浪者不关心盒子是否存在,因为机器现在在 virtualbox 中。
我试图浏览文档,但找不到我要找的信息。
能否请您解释一下vagrant的整个工作流程?
你是对的;
基本上,当您 运行 vagrant up
vagrant 正在克隆盒子以创建新实例 VM 时。创建此 VM 后,它没有 link 到克隆(原始框),因此如果您删除框,它不会影响生成的 VM。
如果您需要销毁并重新创建 VM,您将遇到问题。
如果您使用 linked clones VM,它的工作方式会略有不同,在这种情况下,盒子的依赖性更强。
我有大约 15 台流浪机器。这些机器使用 CentOS 和 Ubuntu 作为它们的 base boxes。当我 运行 vagrant box list
centos/7 (virtualbox, 1705.01)
centos/7 (virtualbox, 1706.02)
centos/7 (virtualbox, 1707.01)
centos/7 (virtualbox, 1708.01)
geerlingguy/centos7 (virtualbox, 1.2.3)
geerlingguy/ubuntu1604 (virtualbox, 1.1.6)
laravel/homestead (virtualbox, 3.0.0)
puppetlabs/centos-7.2-64-nocm (virtualbox, 1.0.1)
ubuntu/precise64 (virtualbox, 20170427.0.0)
ubuntu/trusty64 (virtualbox, 20170615.0.0)
ubuntu/trusty64 (virtualbox, 20170619.0.0)
ubuntu/xenial64 (virtualbox, 20170802.0.0)
ubuntu/xenial64 (virtualbox, 20170815.1.0)
ubuntu/yakkety64 (virtualbox, 20170202.0.0)
ubuntu/zesty64 (virtualbox, 20170412.1.0)
尝试 p运行e 时,我收到几条消息,提示某些框正在使用中,如果我删除该框,我的环境将被破坏。
如果我删除所有框,现有机器会怎样?
我通过使用 centos/7 - 1708.01 创建新机器进行测试。
- 已安装
whois
和vim
- 在主文件夹中创建了一个虚拟文件。
- 停止机器
- 删除了
vagrant box remove centos/7 --provider virtualbox --box-version 1708.01
的框。 - 开始使用
vagrant up
并且机器启动没有任何问题。
它仍然有我安装的包和我创建的文件。
我用 ubuntu/xenial64
做了同样的测试。
- 使用最新的盒子版本创建了一台机器。
- 安装了新包并修改了几个文件。
- 停止机器
- 删除了 ubuntu/xenial64 的最新版本
- 再次启动机器
我仍然可以看到我安装的软件包和文件。
如果删除框不会影响现有机器,那么为什么会出现关于环境已损坏的消息?
我的理解是,在我使用盒子创建机器后,流浪者不关心盒子是否存在,因为机器现在在 virtualbox 中。
我试图浏览文档,但找不到我要找的信息。 能否请您解释一下vagrant的整个工作流程?
你是对的;
基本上,当您 运行 vagrant up
vagrant 正在克隆盒子以创建新实例 VM 时。创建此 VM 后,它没有 link 到克隆(原始框),因此如果您删除框,它不会影响生成的 VM。
如果您需要销毁并重新创建 VM,您将遇到问题。
如果您使用 linked clones VM,它的工作方式会略有不同,在这种情况下,盒子的依赖性更强。