Box Versioning

从Vagrant 1.5版本开始, box支持版本控制。这允许创建box的人将更新推送到box中,使用box的人有一个简单的工作流,用于检查更新、更新box以及查看发生了什么更改。
如果你刚刚开始使用Vagrant,那么box版本控制并不十分重要,我们建议你先学习一些其他主题。但是,如果你在团队中使用vagrant,或者计划创建自己的boxes,版本控制非常重要。幸运的是,将版本控制内建到vagrant中可以使其易于使用并很好地适应vagrant工作流。
本页面将介绍如何使用版本化的boxes。它不包括如何用版本更新你自己的自定义box。这将在创建一个基本box中介绍。

1.Viewing Versions and Updating查看版本和更新

vagrant box列表只显示已安装的boxes版本。如果你想查看一个box的所有可用版本,就必须在HashiCorp的Vagrant Cloud上找到该box。找到一个box的一个简单方法是使用url https://vagrantcloud.com/$USER/$ box。例如,对于hashicorp/precise64 box,你可以在https://vagrantcloud.com/hashicorp/precise64中找到关于它的信息。
你可以使用 vagrant box outdated命令检查你正在使用的box是否过时。这可以检查当前vagrant环境中的box是否过时,以及系统上安装的其他box是否过时。
最后,你还可以使用 vagrant box update命令更新框。这将下载并安装新box。这不会神奇地更新正在运行的vagrant环境。如果一个vagrant环境已经在运行,你将不得不销毁并重新创建它,以便在该box中获得新的更新。更新命令只在本地下载这些更新。

2.Version Constraints版本限制

你可以通过使用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而言,这意味着任何运行在vagrant box版本“1.1.5”中的软件都应该在“1.2”和“1.4.5”等版本中工作,但是“2.0”可能会引入破坏软件的重大更改。通过遵循这个约定,最好的约束是~> 1.0,因为你知道无论哪个版本在这个范围内都是安全的。
请注意,虽然语义版本控制规范允许有三个以上的点和预发布或beta版本,但vagrant box必须是 X.Y.Z 格式,其中X Y Z都是正整数。

3.Automatic Update Checking自动更新检查

使用Vagrantfile,你还可以配置Vagrant,以便在任何vagrant up命令运行 时自动检查更新。默认情况下是启用的,但是可以通过在Vagrantfile文件中设置config.vm.box_check_update = false来轻松禁用。
当启用此功能时,Vagrant将检查每一个vagrant的更新,不仅是在从头创建机器时,在机器恢复时、停止后启动时等等也如此。
如果发现更新,Vagrant会向用户输出警告,让他们知道更新可用。该用户可以选择暂时忽略警告,也可以通过运行vagrant box update来更新该框。
Vagrant不能也不会自动下载更新后的box并更新机器,因为box可能比较大,更新机器需要销毁并重新创建机器,这可能会导致重要数据丢失。因此,这个过程是手动的,用户必须手动输入命令才能完成。

4.Pruning Old Versions删除旧版本

vagrant不会自动删除旧版本,因为它不知道它们是否被其他vagrant环境使用。因为box可能很大,你可能想要偶尔使用vagrant box remove命令来积极修剪他们。你可以看到所有使用vagrant box list命令查看到所有安装的box。
另一个选项是使用vagrant box prune命令删除所有已安装的过时且当前未使用的box。

virtualbox+vagrant学习-5-Boxes-2-Box Versioning的更多相关文章

  1. virtualbox+vagrant学习-2(command cli)-26-vagrant share命令

    Share share命令初始化了一个vagrant share会话,允许你与世界上任何一个人共享vagrant环境,允许在几乎任何网络环境中直接在vagrant环境中进行协作. 你可以在本博客的vi ...

  2. virtualbox+vagrant学习-2(command cli)-1-vagrant box命令

    vagrant box 这是用于管理(添加.删除等)boxes的命令. box 是一个打包好的操作系统,是一个后缀名为 .box 的文件,其实是一个压缩包,里面包含了 Vagrant 的配置信息和 V ...

  3. virtualbox+vagrant学习-1-环境安装及vagrantfile的简单配置-Mac系统

    在学习docker-machine时,发现需要使用到虚拟化平台,所以选择了使用virtualBox. 然后后面发现需要使用vagrant来在mac系统中作为虚拟机管理软件,所以下面将会简述我自己学习使 ...

  4. virtualbox+vagrant学习-2(command cli)-2-vagrant cloud命令--有问题

    Cloud https://www.vagrantup.com/docs/cli/cloud.html 命令: vagrant cloud 这是用来管理与vagrant相关的任何东西的命令. 该命令的 ...

  5. virtualbox+vagrant学习-2(command cli)-8-vagrant Package命令

    Package 格式: vagrant package [options] [name|id] 这将当前正在运行的VirtualBox或Hyper-V环境打包到一个可重用的box中.如果provide ...

  6. virtualbox+vagrant学习-4-Vagrantfile-5-Machine Settings

    Machine Settings 配置命名空间:config.vm config.vm的设置将修改vagrant管理的机器的配置 Available Settings可用设置 config.vm.ba ...

  7. virtualbox+vagrant学习-2(command cli)-19-vagrant box命令

    Status 格式: vagrant status [name|id] options只有 -h, --help 这将告诉你vagrant正在管理的机器的状态. 很容易就会忘记你的vagrant机器是 ...

  8. virtualbox+vagrant学习-3-Vagrant Share-3-SSH Sharing

    SSH Sharing vagrant share通过向vagrant share提供--SSH标志,使远程SSH访问vagrant环境变得非常容易. 如果你想让同事访问你的SSH,以便对ops问题进 ...

  9. virtualbox+vagrant学习-5-Boxes-1-简介

    Boxes boxes是vagrant环境的包格式.在vagrant支持的任何平台上,任何人都可以使用一个box来创建一个相同的工作环境.vagrant box实用程序提供了管理boxes的所有功能. ...

随机推荐

  1. Java基础(3)——变量

    从这篇文章起开始正式进入正题啦,本文将较为简单的介绍一下变量以及常量.变量,顾名思义,就是可以变的量,常量那么久相反了,常常不变的量就叫常量._(¦3」∠) 变量 在 Java 中,任何一个变量都得有 ...

  2. 用Lua控制Nginx静态文件的url访问权限

    需求背景:比如我们有一个存储文件的web服务器,一般通过url可直接访问到:http://127.0.0.1/uploads/test.rar,如果我们需要限制别人的访问,可以通过添加lua脚本来控制 ...

  3. 【SSH网上商城项目实战10】商品类基本模块的搭建

    转自:https://blog.csdn.net/eson_15/article/details/51354932 前面我们完成了与商品类别相关的业务逻辑,接下来我们开始做具体商品部分. 1. 数据库 ...

  4. stringstream快速实现String和int之间的转换

    需要包含头文件”sstream” #include <iostream> #include <string> #include <sstream> using na ...

  5. JSP九个内置对象及指令、动作标签

    一.JSP九大内置对象 (一)JSP中无需创建就可以使用的9个对象 输入输出对象 1.response(HttpServletResponse):处理JSP生成的响应,然后将响应结果发送给客户端.是s ...

  6. 测试canvas绘制旋转文字的性能

    canvas 绘制各种动画效果时,我们经常会使用画布旋转,使绘制上去的元素有旋转的效果. 最近在项目中碰到了很严重的性能问题,经常排查发现是因为绘制批量文字时使用了画布旋转,且每行文字的旋转角度是不一 ...

  7. Html5 锚 <a>的页内跳转, name=abc herf=#abc

    锚点是网页制作中超级链接的一种,又叫命名锚记.命名锚记像一个迅速定位器一样是一种页面内的超级链接,运用相当普遍. 英文名:anchor 使用命名锚记可以在文档中设置标记,这些标记通常放在文档的特定主题 ...

  8. C++创建一个新的进程

    原文:http://blog.csdn.net/hk627989388/article/details/53309865 STARTUPINFO用于指定新进程的主窗口特性的一个结构. PROCESS_ ...

  9. Android碎笔录3——点击跳转

    只要是view都能设置点击事件,不必要非得是Button. 要想实现跳转得三步走: 第一步.绑定 每个Layout都有一个一个java文件跟它绑定,这个Layout相关的代码都写在这个java文件里 ...

  10. JS的排序算法

    排序是最基本的算法(本文排序为升序Ascending),常见的有以下几种: 1.冒泡排序 Bubble Sort 2.选择排序 Selection Sort 3.插入排序 Insertion Sort ...