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开源项目】

    摘要: 1. 整理出一些使用比较广或者个人觉得比较好的java开源项目和资料供参考. 2. 如果你觉得好但是我没有列出的开源项目请告诉我,方便我添加到列表里. 3. 如果你发现信息描述有误请联系我,我 ...

  2. jsp技术知识点

    1.jsp被Tomcat翻译成.java文件后,会被放在Tomcat安装目录下的\work\Catalina\localhost\station\org\apache\jsp文件夹下 2.El表达式表 ...

  3. golang 的md5加密

    先看实现代码: package main import (     "crypto/md5"     "encoding/hex"     "fmt& ...

  4. docker 无法启动容器,run容器后状态为restarting

    问题:如题,无法进入容器,docker logs 容器id  发现 哦 ,原来缺少个文件,这些就容易了

  5. DLL文件

    Dll文件的全称是Dynamic Link Library,中文意思为动态链接库,DLL文件是不可执行文件,其是一个包含由多个程序同时使用的代码和数据的库,动态链接提供了一种方法,使进程可以调用不属于 ...

  6. Tomcat配置连接c3p0连接池

    一.Tomcat配置JNDI资源 JNDI(Java Naming and Directory Interface),Java 命名和目录接口. JNDI的作用就是:在服务器上配置资源,然后通过统一的 ...

  7. AIX 6.1记录

    安装Oracle需要开启远程桌面进行访问 1. X Windows需要如下软件包才能正常运行 lslpp -l X11.apps.rte X11.apps.xterm X11.base.rte X11 ...

  8. css取消双击选中文字

    在我们在写前端页面的时候,由于手速过快(当然这都是指的老司机),会经常双击,浏览器就会默认选中你双击的文本,这种感觉有点不太好. 这个时候就用到了 user-select:none; 属性. 因为存在 ...

  9. 【Angularjs】ng-repeat中使用ng-model遇到的问题

    总结:在ng-repeat中ng-model的问题,原因是ng-model对controller中的$scope是不可见的,所以在使用repeat中的某个对象的属性的时候,最好还是将该对象或者该对象的 ...

  10. Eclipse导出可运行的jar包并运行

    https://blog.csdn.net/kpchen_0508/article/details/49275407 程序运行的第二种方式: