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的所有功能. ...
随机推荐
- jQuery 表格中实现“删除线”的增进方法
之前做了一个删除线的效果,就是类似这样的,在内容的中间加一条线. 但是又有点不同的是,这种删除线不是单纯的在文字之上,而是给一个Table中的一行加上这种删除线效果. 这里有两个方法,是在不同时期写的 ...
- JAVA基础之——使用idea创建maven项目 以及使用tomcat本地调试springmvc
前言:关于这个话题网上有很多,本文旨在引导实战纠偏,理论偏少,如果按照步骤还不能达到本文目的,请留言. 1 环境准备 1.1 软件准备 idea:官方下载社区版,下载后安装 maven:Apache- ...
- 时间复杂度为O(logN)的常用算法
时间复杂度为O(logN)的常用算法 折半查找 /* * 折半查找 * 默认查找的数组已经排过序 */ public static int binarySearch(int[] a,int x){ i ...
- unity3d之简单的时钟倒计时demo
输入结束时间,开始倒计时,时间差不超过一天,附上代码:(关于个位数显示,加个判断如果小于10 显示的字符串加上0) using System.Collections; using System.Col ...
- 0 test classes found in package in XXXX
除了参考其他的方法,要注意XXXX位置下是否有空文件夹,删掉.
- laravel开发之-安装汉化语言包
第一种方法: 1.输入命令:composer require "overtrue/laravel-lang:dev-master" 2.将config/app.php中命令“Ill ...
- 几种常用的bootstrap功能。
---恢复内容开始--- 我对于bootstrap定义与一种插件,他可以使我们的网页布局更加的炫酷,更加的整洁和合理.他的优点不多说,缺点一个就够我们头疼的,那就是需要记一些长长的英文名. 我为大家说 ...
- Java学习笔记(4)----Public,Protected,Package,Private修饰符可见性
Java修饰符类型(public,protected,private,friendly) public的类.类属变量及方法,包内及包外的任何类均可以访问:protected的类.类属变量及方法,包内的 ...
- Android解析WindowManager(二)Window的属性
前言 在上一篇文章我们学习了WindowManager体系,了解了Window和WindowManager之间的关系,这一篇我们接着来学习Window的属性. 1.概述 上一篇文章中我们讲过了Wind ...
- EF6 code first 新建项目注意问题
1.一开始就建立自动迁移模式 打开Package Manager Console,确保Package source是nuget.org 命令行输入: enable-migrations 然后第一次运行 ...