Vagrant 手册之 box - 版本
从 Vagrant 1.5 版本起,box 开始支持版本。这运行创建 box 的人提交更新,使用 box 的人检查更新、更新 box 并查看变更记录。
对于 Vagrant 新手,box 版本并不重要,建议先去学习其他知识点。但是如果你在团队中使用 Vagrant 并且计划创建自己的 box,版本非常重要。幸运的是,Vagrant 内置版本控制功能易于使用,并很好地适应 Vagrant 工作流程。
本章讲解如何使用带版本的 box。如果想了解如何创建带版本的 box,请参考 创建基础 box。
1. 查看版本并更新
vagrant box list 只显示 box 的安装版本。如果查看 box 的可用版本,需要在 HashiCorp’s Vagrant Cloud 上查找 box。可用直接通过 URL https://vagrantcloud.com/$USER/$BOX 查找 box。例如,对于 hashicorp/precise64 这个 box,可用在 https://vagrantcloud.com/hashicorp/precise64 获取信息。
可用通过 vagrant box outdated 命令检查 box 是否已经过时。这可以检查当前 Vagrant 环境中的 box 是否过时以及系统上安装的任何其他 box。
可用通过 vagrant box update 命令更新 box。这会下载并安装新 box。这不会更新运行中的 Vagrant 环境。如果 Vagrant 环境已经在运行,必须销毁并重新创建它才能获取 box 中的更新,update 命令只是在本地下载这些更新。
2. 版本约束
可以通过在 Vagrantfile 中指定 config.vm.box_version 选项,限制 Vagrant 环境使用特定的一个或多个版本的 box。
如果未指定此选项,则相当于指定“>=0”的约束,始终使用最新版本。
box 版本配置可以是特定版本或几个版本。约束可以是以下任意组合:=X,>X,<X,>=X,<=X,~> X。可以通过用逗号分隔多个约束来组合多个约束。所有的约束条件应该是自我解释的,除了 ~>,称为“悲观约束”。例如:~> 1.0 相当于 > = 1.0,< 2.0。~> 1.1.5 相当于 > = 1.1.5,<1.2.0。
可以选择合适的版本处理方式。但是,公共目录中的许多 box 都遵循 语义版本控制。基本上,只有第一个数字(“主要版本”)打破向后兼容性。就 Vagrant box 而言,这意味着任何运行在 box “1.1.5”版本中的软件都应该在“1.2”和“1.4.5”中工作,但是“2.0”可能会引起重大变化。按照这个约定,最好的约束是 ~> 1.0,因为无论该版本在哪个范围内,都知道它是安全的。
注意,虽然 语义版本控制 规范允许超过三个点,并且支持 pre-release 及 beta 版本,但 Vagrant 框必须是 X.Y.Z 格式,其中 X,Y 和 Z 都是正整数。
3. 自动更新检查
使用 Vagrantfile,还可以配置 Vagrant 在任何 vagrant up 期间自动检查更新。这是默认启用的,但可以在 Vagrantfile 中通过 config.vm.box_check_update=false 轻松禁用。
启用此功能后,Vagrant 将在每次 vagrant 启动时检查更新情况,不在从头开始创建机器是检查,还在恢复运行时以及重启时检查更新。
如果发现更新,Vagrant 会向用户发出警告,让他们知道有更新可用。用户可以选择忽略该警告,或者可以通过运行 vagrant box update 来更新该 box。
Vagrant 不能也不会自动下载更新的机器并更新机器,因为机器可能相对较大,更新机器需要销毁机器并重新创建机器,这会导致重要数据丢失。因此,此过程是手动的,用户必须手动输入命令才能执行此操作。
4. 修剪旧版本
Vagrant 不会自动修剪旧版本,因为无法确认其是否可能被其他 Vagrant 环境使用。因为 box 可能很大,所以可能需要一段时间后通过使用 vagrant box remove 主动修剪它们。可以通过 vagrant box list 查看所有安装的 box。
另一种选择是使用 vagrant box prune 命令删除所有已经过期并且当前未使用的已安装 box。
Vagrant 手册之 box - 版本的更多相关文章
- Vagrant 手册之 box - box 的文件格式
原文地址 过去,box 只是 VirtualBox 导出的 tar 文件.由于 Vagrant 现在支持多个 provider 和版本控制,box 文件稍微复杂一些. 用于 Vagrant 1.0.x ...
- Vagrant 手册之 box - 创建基础 box
原文地址 有一种特殊的 box 被称为"base box".这些 box 包含 Vagrant 运作所需的最低限度,通常不是对现有的 Vagrant 环境("base b ...
- Vagrant 手册之 box - 概述
原文地址 box 是 Vagrant 环境中使用的包格式.box 可以在 Vagrant 支持的所有平台上被任何人使用,从而提供相同的工作环境. vagrant box 工具提供了管理 box 的所有 ...
- Vagrant 手册之 box - box 的信息格式
原文地址 创建 Vagrant 的 box 时,可以提供在运行 vagrant box list -i 时展示的与用户相关的其他信息.例如,可以打包 box,以包含有关该 box 的作者和网站信息: ...
- Vagrant 手册之 Vagrantfile - 配置版本
原文地址 配置版本是 Vagrant 1.1+(引入了大量新功能和配置选项) 能够与 Vagrant 1.0.x Vagrantfiles 保持向后兼容的机制. 现在运行 vagrant init 时 ...
- Vagrant 手册之 Vagrantfile - 机器设置 config.vm
原文地址 配置的命名空间:config.vm config.vm 中的设置修改 Vagrant 管理的机器的配置. 1. 可用的设置项 config.vm.boot_timeout Vagrant 等 ...
- Gpload安装手册(Linux版本)
Gpload安装手册(Linux版本) 一.python 2.7版本 Linux系统默认是安装python2.7的,如果没有需要手动安装(python版本要求2.4.4以上): 通过命令:python ...
- Vagrant 无法校验手动下载的 Homestead Box 版本
起因 4年前电脑,配置不太好了,现有的 Homestead 运行起来太吃内存.在修改了 Homestead.yaml 文件里 memory 选项的内存配置为 1024 后,应用最新配置重启失败. 索性 ...
- Vagrant 手册之 Vagrantfile - 最低版本
原文地址 可以在 Vagrantfile 中指定一组 Vagrant 的版本,以强制人们使用带有 Vagrantfile 的特定版本的 Vagrant.这可以帮助解决使用带有 Vagrantfile ...
随机推荐
- SpringBoot(三) -- SpringBoot与日志
一.日志的起源 现在假设一个开发人员在开发一个大型系统,由于这个系统过于庞大没在很多的地方将关键的数据使用System.out.println()打印,但是当我们在项目正式上线时又需要去除,在项目bu ...
- JVM可视化监控工具jconsole以及jvisualvm的配置
使用jdk自带的jconsole.jvisualvm插件,监控远程linux服务器中tomcat的jvm情况 (jconsole.jvisualvm插件可查看堆内存变化情况,线程状态,CPU使用情况, ...
- javascript数组排序和prototype详解
原型的概念::原型对象里的所有属性和方法 被所有构造函数实例化出来的对象所共享,类似于java中的 static 正因为共享所以单一的操作 就会影响了全局,因此使用时需注意 基于prototype:为 ...
- [BZOJ4358]Permu(回滚莫队)
[BZOJ4358]Permu(回滚莫队) 题面 给出一个长度为n的排列P(P1,P2,...Pn),以及m个询问.每次询问某个区间[l,r]中,最长的值域连续段长度. 分析 最简单的方法显然是用线段 ...
- 关于Python程序的运行方面,有什么手段能提升性能?
1.使用多进程,充分利用机器的多核性能 2.对于性能影响较大的部分代码,可以使用C或C++编写 3.对于IO阻塞造成的性能影响,可以使用IO多路复用来解决 4.尽量使用Python的内建函数 5.尽量 ...
- MicroPython 的优势
定位的场景 MicroPython 在设计上最初就是为了嵌入式微处理器运行,例如在 nRF51822 (256kB flash + 16kB RAM) 的芯片上也可以运行起来,也有人肾得慌在 STM3 ...
- 一个完整的HTTP请求过程详细
整个流程1.域名解析 —> 2.与服务器建立连接 —> 3.发起HTTP请求 —>4. 服务器响应HTTP请求,浏览器得到html代码 —> 5.浏览器解析html代码,并请求 ...
- python 数据分析 Numpy(Numerical Python Basic)
a = np.random.random((2,4)) a Out[5]: array([[0.20974732, 0.73822026, 0.82760722, 0.050551 ], [0.773 ...
- python中常用的时间操作
python中常用的时间模块有time和datetime,以下是这两个模块中常用的方法: #先引入模块 import timefrom datetime import datetiem, timezo ...
- 【LeetCode】前缀树 trie(共14题)
[208]Implement Trie (Prefix Tree) (2018年11月27日) 实现基本的 trie 树,包括 insert, search, startWith 操作等 api. 题 ...