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