当前位置: 首页 > news >正文

vagrant

#镜像列表

http://www.vagrantbox.es/


#官方文档
https://www.vagrantup.com/intro/getting-started/install.html

#命令

https://www.vagrantup.com/docs/cli/


#教程
https://ninghao.net/video/1571

#视频教程
https://ninghao.net/video/1570

vagrant box add {title} {url}
vagrant init {title}
vagrant up

#查看帮助
vagrant help

1、添加box http://vagrantcloud.com
vagrant box add ubuntu/xenial64
vagrant box add centos-7.0-x86_64 E:\box\centos-7.0-x86_64.box #本地添加需指定名字

3、新建一个目录
mkdir test

3、进入新建的目录 用一个box来初始化项目
cd test
vagrant init ubuntu/xenial64

4、开机
vagrant up

 

单个配置文件管理多个虚拟机

 

快照管理


可以针对单个虚拟机操作,需要指定虚拟机的名字
#快照列表
vagrant snapshot list [options] [vm-name]
vagrant snapshot list pub

#生成快照
vagrant snapshot save [options] [vm-name] <name>
vagrant snapshot save dev dev1

#删除快照
vagrant snapshot delete pub pub1


同时针对多个虚拟机操作

#该目录下的多个虚拟都会生成的叫one的快照
vagrant snapshot save one

#同时删除每个虚拟机下叫one的快照
vagrant snapshot save one

 

查看虚拟机状态

全局下可以用唯一id来操作虚拟机,或单独进入某个目录操作

vagrant halt c29d064

 

网络类型(http://www.tuicool.com/articles/v6ZnUzm

Vagrant 中一共有三种网络配置,下面我们将会详解三种网络配置各自优缺点。

 

端口映射(Forwarded port) ,顾名思义是指把宿主计算机的端口映射到虚拟机的某一个端口上,访问宿主计算机端口时,请求实际是被转发到虚拟机上指定端口的。Vagrantfile中设定语法为:

config.vm.forwarded_port 80, 8080

以上将访问宿主计算机8080端口的请求都转发到虚拟机的80端口上进行处理。

 

默认只转发TCP包,UDP需要额外添加以下语句:

config.vm.forwarded_port 80, 8080, protocol: "udp"

 

优点:

简单易理解

容易实现外网访问虚拟机

缺点:

 

如果一两个端口需要映射很容易,但是如果有有很多端口,比如MySQL,MongoDB,tomcat等服务,端口比较多时,就比较麻烦。

不支持在宿主机器上使用小于1024的端口来转发。比如:不能使用SSL的443端口来进行https连接。

私有网络(Private network) ,只有主机可以访问虚拟机,如果多个虚拟机设定在同一个网段也可以互相访问,当然虚拟机是可以访问外部网络的。设定语法为:

config.vm.network "private_network", ip: "192.168.50.4"

优点:

安全,只有自己能访问

 

缺点:

因为私有的原因,所以团队成员其他人不能和你写作

公有网络(Public network) ,虚拟机享受实体机器一样的待遇,一样的网络配置,vagrant1.3版本之后也可以设定静态IP。设定语法如下:

 

config.vm.network "public_network", ip: "192.168.1.120"

公有网络中还可以设置桥接的网卡,语法如下

 

config.vm.network "public_network", :bridge => 'en1: Wi-Fi (AirPort)'

优点:

方便团队协作,别人可以访问你的虚拟机

 

缺点:

需要有网络,有路由器分配IP

 

 

Vagrant 中一共有三种网络配置,下面我们将会详解三种网络配置各自优缺点。

端口映射(Forwarded port) ,顾名思义是指把宿主计算机的端口映射到虚拟机的某一个端口上,访问宿主计算机端口时,请求实际是被转发到虚拟机上指定端口的。Vagrantfile中设定语法为:

config.vm.forwarded_port 80, 8080

以上将访问宿主计算机8080端口的请求都转发到虚拟机的80端口上进行处理。

默认只转发TCP包,UDP需要额外添加以下语句:

config.vm.forwarded_port 80, 8080, protocol: "udp"

优点:

  • 简单易理解
  • 容易实现外网访问虚拟机

缺点:

  • 如果一两个端口需要映射很容易,但是如果有有很多端口,比如MySQL,MongoDB,tomcat等服务,端口比较多时,就比较麻烦。
  • 不支持在宿主机器上使用小于1024的端口来转发。比如:不能使用SSL的443端口来进行https连接。

私有网络(Private network) ,只有主机可以访问虚拟机,如果多个虚拟机设定在同一个网段也可以互相访问,当然虚拟机是可以访问外部网络的。设定语法为:

config.vm.network "private_network", ip: "192.168.50.4"

优点:

  • 安全,只有自己能访问

缺点:

  • 因为私有的原因,所以团队成员其他人不能和你写作

公有网络(Public network) ,虚拟机享受实体机器一样的待遇,一样的网络配置,vagrant1.3版本之后也可以设定静态IP。设定语法如下:

config.vm.network "public_network", ip: "192.168.1.120"

公有网络中还可以设置桥接的网卡,语法如下

config.vm.network "public_network", :bridge => 'en1: Wi-Fi (AirPort)'

优点:

  • 方便团队协作,别人可以访问你的虚拟机

缺点:

  • 需要有网络,有路由器分配IP

 

常见错误:

1、

songjk@songjk-PC E:\vagrant\book
$ vagrant  reload d73002f
==> default: Attempting graceful shutdown of VM...
==> default: Clearing any previously set forwarded ports...
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
    default: Adapter 1: nat
    default: Adapter 2: hostonly
==> default: Forwarding ports...
    default: 22 (guest) => 2222 (host) (adapter 1)
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
    default: SSH address: 127.0.0.1:2222
    default: SSH username: vagrant
    default: SSH auth method: private key
    default: Warning: Remote connection disconnect. Retrying...
==> default: Machine booted and ready!
[default] GuestAdditions 5.0.24 running --- OK.
==> default: Checking for guest additions in VM...
==> default: Configuring and enabling network interfaces...
The following SSH command responded with a non-zero exit status.
Vagrant assumes that this means the command failed!

# Down the interface before munging the config file. This might
# fail if the interface is not actually set up yet so ignore
# errors.
/sbin/ifdown 'eth1'
# Move new config into place
mv -f '/tmp/vagrant-network-entry-eth1-1497676416-0' '/etc/sysconfig/network-scripts/ifcfg-eth1'
# attempt to force network manager to reload configurations
nmcli c reload || true

# Restart network (through NetworkManager if running)
if service NetworkManager status 2>&1 | grep -q running; then
  service NetworkManager restart
else
  service network restart
fi


Stdout from the command:

Shutting down interface eth0:  [  OK  ]
Shutting down loopback interface:  [  OK  ]
Bringing up loopback interface:  [  OK  ]
Bringing up interface eth0:
Determining IP information for eth0... done.
[  OK  ]
Bringing up interface eth1:  [  OK  ]
Bringing up interface eth2:  Device eth2 does not seem to be present, delaying initialization.
[FAILED]


Stderr from the command:

bash: line 10: nmcli: command not found

更改vagrant默认网络模式后出现

config.vm.network "private_network", ip: "192.168.2.100"

安装 yum install NetworkManager 解决

 

2、解决Vagrant中VirtualBox Guest Additions版本不匹配问题

  如过不匹配可能会导致共享目录失败

vagrant plugin install vagrant-vbguest

  安装好后,重启 vagrant  up 会自动下载安装

http://windrocblog.sinaapp.com/?p=1550

 

相关文章:

  • 为女票写的计算工作时间的SQL
  • bug优先级别
  • 分析器错误消息: 该配置节不能包含 CDATA 或文本元素。
  • Anroid开发中常用快捷键
  • linux学习 – shell脚本
  • Web性能测试工具推荐
  • openstack一键安装(最新版)
  • DBeauty 3.2.6 发布,数据关系浏览器
  • 互联网金融MySQL优化参数标准
  • ndoe.js回掉函数
  • Nodejs
  • 第一天 开始Linux 征途了
  • 百度网页分享js代码
  • 基于Go的websocket消息服务
  • [52PJ] Java面向对象笔记(转自52 1510988116)
  • 3.7、@ResponseBody 和 @RestController
  • Android Volley源码解析
  • Debian下无root权限使用Python访问Oracle
  • ES6语法详解(一)
  • Map集合、散列表、红黑树介绍
  • PHP的Ev教程三(Periodic watcher)
  • SpriteKit 技巧之添加背景图片
  • vue数据传递--我有特殊的实现技巧
  • 基于Android乐音识别(2)
  • 日剧·日综资源集合(建议收藏)
  • 使用 Node.js 的 nodemailer 模块发送邮件(支持 QQ、163 等、支持附件)
  • 微信小程序:实现悬浮返回和分享按钮
  • 无服务器化是企业 IT 架构的未来吗?
  • 原生 js 实现移动端 Touch 滑动反弹
  • AI又要和人类“对打”,Deepmind宣布《星战Ⅱ》即将开始 ...
  • 专访Pony.ai 楼天城:自动驾驶已经走过了“从0到1”,“规模”是行业的分水岭| 自动驾驶这十年 ...
  • $var=htmlencode(“‘);alert(‘2“); 的个人理解
  • (13):Silverlight 2 数据与通信之WebRequest
  • (4) PIVOT 和 UPIVOT 的使用
  • (6)设计一个TimeMap
  • (NO.00004)iOS实现打砖块游戏(九):游戏中小球与反弹棒的碰撞
  • (Redis使用系列) Springboot 使用Redis+Session实现Session共享 ,简单的单点登录 五
  • (zt)基于Facebook和Flash平台的应用架构解析
  • (附源码)apringboot计算机专业大学生就业指南 毕业设计061355
  • (四)模仿学习-完成后台管理页面查询
  • (小白学Java)Java简介和基本配置
  • (一)【Jmeter】JDK及Jmeter的安装部署及简单配置
  • (转)LINQ之路
  • (转)创业家杂志:UCWEB天使第一步
  • ***微信公众号支付+微信H5支付+微信扫码支付+小程序支付+APP微信支付解决方案总结...
  • *p++,*(p++),*++p,(*p)++区别?
  • .md即markdown文件的基本常用编写语法
  • .NET Core日志内容详解,详解不同日志级别的区别和有关日志记录的实用工具和第三方库详解与示例
  • .Net Memory Profiler的使用举例
  • .net(C#)中String.Format如何使用
  • .Net转前端开发-启航篇,如何定制博客园主题
  • .sys文件乱码_python vscode输出乱码
  • [ 蓝桥杯Web真题 ]-布局切换
  • [].shift.call( arguments ) 和 [].slice.call( arguments )
  • [c++] 什么是平凡类型,标准布局类型,POD类型,聚合体