virtualbox+vagrant学习-5-Boxes-2-Box Versioning
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的更多相关文章
- virtualbox+vagrant学习-2(command cli)-26-vagrant share命令
Share share命令初始化了一个vagrant share会话,允许你与世界上任何一个人共享vagrant环境,允许在几乎任何网络环境中直接在vagrant环境中进行协作. 你可以在本博客的vi ...
- virtualbox+vagrant学习-2(command cli)-1-vagrant box命令
vagrant box 这是用于管理(添加.删除等)boxes的命令. box 是一个打包好的操作系统,是一个后缀名为 .box 的文件,其实是一个压缩包,里面包含了 Vagrant 的配置信息和 V ...
- virtualbox+vagrant学习-1-环境安装及vagrantfile的简单配置-Mac系统
在学习docker-machine时,发现需要使用到虚拟化平台,所以选择了使用virtualBox. 然后后面发现需要使用vagrant来在mac系统中作为虚拟机管理软件,所以下面将会简述我自己学习使 ...
- virtualbox+vagrant学习-2(command cli)-2-vagrant cloud命令--有问题
Cloud https://www.vagrantup.com/docs/cli/cloud.html 命令: vagrant cloud 这是用来管理与vagrant相关的任何东西的命令. 该命令的 ...
- virtualbox+vagrant学习-2(command cli)-8-vagrant Package命令
Package 格式: vagrant package [options] [name|id] 这将当前正在运行的VirtualBox或Hyper-V环境打包到一个可重用的box中.如果provide ...
- virtualbox+vagrant学习-4-Vagrantfile-5-Machine Settings
Machine Settings 配置命名空间:config.vm config.vm的设置将修改vagrant管理的机器的配置 Available Settings可用设置 config.vm.ba ...
- virtualbox+vagrant学习-2(command cli)-19-vagrant box命令
Status 格式: vagrant status [name|id] options只有 -h, --help 这将告诉你vagrant正在管理的机器的状态. 很容易就会忘记你的vagrant机器是 ...
- virtualbox+vagrant学习-3-Vagrant Share-3-SSH Sharing
SSH Sharing vagrant share通过向vagrant share提供--SSH标志,使远程SSH访问vagrant环境变得非常容易. 如果你想让同事访问你的SSH,以便对ops问题进 ...
- virtualbox+vagrant学习-5-Boxes-1-简介
Boxes boxes是vagrant环境的包格式.在vagrant支持的任何平台上,任何人都可以使用一个box来创建一个相同的工作环境.vagrant box实用程序提供了管理boxes的所有功能. ...
随机推荐
- django中的验证码
from django.shortcuts import renderfrom PIL import Imagefrom PIL import ImageDrawfrom PIL import Ima ...
- python学习之老男孩python全栈第九期_day017知识点总结——初识递归、算法
一. 递归函数 如果一个函数在内部调用自身本身,这个函数就是递归函数. 最大递归深度默认是997 -- python从内存角度出发做得限制(而不是程序真的报错),最大深度可以修改 def func(n ...
- Maven学习总结(三):修改从Maven中心仓库下载到本地的jar包的默认存储位置
一:修改从Maven中心仓库下载到本地的jar包的默认存储位置 从Maven中心仓库下载到本地的jar包的默认存放在”${user.home}/.m2/repository”中,${user.home ...
- 【HTML&CSS】基本的入门
在公司培训一段时间不久就去流浪了一段时间,现在回来重新捧起心爱的编程,特别亲切. 自学HTML&CSS,别人说了很多,这那这那的,无论简单还是困难,不亲自去俯下身子学习,怎么都学不会HTML和 ...
- Drupal网站报错:PDOException: in lock_may_be_available()
Drupal网站报错: 原因: windows中mysql的服务停止了: 解决办法: 在服务中,启动mysql服务 启动后,刷新页面,问题完美解决
- spring 与mybatis 整合总结
刚看完同学给我的代码,我忍不住爆粗.去TMD,写得像坨屎,恶心,乱七八糟,这让我怎么交差??一行代码注释都没有,还很自以为是的傲慢.“这都不懂?这就是Mybatis啊,有很多种方法实现.....” 操 ...
- Architecture And Framework
高屋建瓴 From Up to Down. Outside into inside. Interface-Oriented Framework with dynamic configuration. ...
- MUI框架-10-MUI 数据交互-跳转详情页面
MUI框架-10-MUI 数据交互-跳转详情页面 上一篇介绍了如何实现数据交互,给别人的 API 发送 ajax 请求,我们得到数据,再使用 art-template 模板引擎拼接 HTML,最终实现 ...
- MAC电脑安装svn客户端cornerstone
个人感觉在mac上最好用的svn客户端就是cornerstone,公司客户端也统一使用这个 sudo spctl --master-disable 这条命令作用就是使得mac运行安装任何来源App,不 ...
- winform基础控件-例子学习
1.如图实现整数计算器 ComboBox控件: Items属性:添加集合中的项. this.comoper.Items.AddRange(new object[] { "+", & ...