1. 添加box
从中科大的网站下载了源
vagrant box add [自定义box名字] [镜像文件]
例子:
vagrant box add ubuntu/14.04 trusty-server-cloudimg-amd64-vagrant-disk1.box
创建通过源创建ubuntu镜像
查看box
vagrant box list
2. 初始化, 启动 连接虚拟机
v初始化
vagrant init base [box]
例子: 通过ubuntu/16.04初始化一个虚拟机
vagrant init ubuntu/16.04
创建虚拟机
vagrant up
3. 启动, 停止, 重启, 销毁
查看虚拟机运行的状态:
vagrant status
停止虚拟机:
vagrant halt
暂停虚拟机
vagrant suspend
恢复虚拟机
vagrant resume
重启虚拟机
vagrant reload
销毁虚拟机
vagrant destroy
4. 共享目录
默认的共享目录: 主机当前目录和虚拟机的/vagrant默认共享
/Users/narcisohuang/workspace/vagrant-workspace/centos/ => /vagrant
5. 自定义共享文件夹(暂时跳过)
看15通过插件实现的nfs格式的共享文件夹.
网络配置:
私有网络, 虚拟机不能和主机的其他的应用进行网络的通信
公有网络, 虚拟机拥有一个公网IP, 可以和主机的其他的应用通信
7. 私有网络
通过以下的命令, 设置虚拟的网络为私有网络, 主机上的其他的应用不能访问到虚拟机
config.vm.network "private_network", ip: "127.0.0.1"
8. 公有网络
通过以下配置来实现虚拟机配置一个公有的IP地址, 主机内的其他的应用可以通过公网IP地址访问到虚拟机
config.vm.network "public_network"
由于我是用的是无线网卡, 需要在多个网卡中选择一个网络, 我选择1号网卡, 也就是连接无线网的网卡
9. 搭建web服务器
sudo yum install -y httpd
10. 重新打包
创建出一个box文件
vagrant package
通过这个box文件可以创建一个虚拟机文件, 再通过虚拟机文件创建出一个虚拟机实例
11. 多主机
创建两个主机分别命名为dev和pro
没有设置网络, 两台虚拟机之间是不能通信的
config.vm.define "dev" do |dev| end config.vm.define "pro" do |pro| end
12. 多主机网络设置
设置私有网络, 注意私有网络是不能和对外通信的网卡在同一个网络段内
当前我的网络在
192.168.1.103
那么, 创建的私有的虚拟机所处的网络就不能在192.168.1.0/24这个段内
Vagrant.configure("2") do |config|
config.vm.box = "centos7"
config.vm.define "dev" do |dev|
dev.vm.network "private_network", ip: "192.168.2.11"
end
config.vm.define "pro" do |pro|
pro.vm.network "private_network", ip: "192.168.2.12"
end
end
创建两个在192.168.2.0/24网段的两个主机, 如果之前已经创建两个主机了, 就需要重新启动虚拟机 vagrant reload
13. 多主机多机名
通过dev和pro变量设置hostname, 从而设置虚拟机的主机名
Vagrant.configure("2") do |config| config.vm.box = "centos7" config.vm.define "dev" do |dev| dev.vm.network "private_network", ip: "192.168.2.11" dev.vm.hostname = "hzh-dev" end config.vm.define "pro" do |pro| pro.vm.network "private_network", ip: "192.168.2.12" pro.vm.hostname = "hzh-pro" end end
主机名插件: vagrant-hostmanager
使用国内的源进行安装插件
vagrant plugin install vagrant-hostmanager --plugin-clean-sources --plugin-source https://gems.ruby-china.com/
使用插件
vagrant hostmanager
dev虚拟机的主机名为hzh-dev
pro虚拟机的主机名为hzh-pro
可以直接通过主机名连接到另一个虚拟机的网络
hostmanager插件将虚拟机的主机名和网络连接在一起了, 并且将各个虚拟机的主机名和IP地址都写到了各自的配置文件/etc/hosts中
14. Guest Additions:vagrant-vbguest, 使用插件来修复原来的共享文件夹的错误
为dev虚拟机安装增强组建
vagrant vbguest --do install dev
centos 安装的过程中网络问题失败了, 算了, 有更好的方法, 使用nfs插件可以不用安装增强组建就可以实现共享文件, 所以算了, 不弄这个了
15. nfs共享目录, 性能更好的共享目录
黑体的部分实现了nfs共享文件夹
# -*- mode: ruby -*- Vagrant.configure("2") do |config| config.vm.box = "centos7" # 启用vagrantmanage 插件 config.hostmanager.enabled = true config.hostmanager.manage_guest = true config.hostmanager.manage_host = true # 设置vbguest不自动更新 config.vbguest.auto_update = false config.vm.define "dev" do |dev| dev.vm.network "private_network", ip: "192.168.2.11" dev.vm.hostname = "hzh-dev" # 配置nfs绑定共享文件 dev.vm.synced_folder "./app", "/app-data", type: "nfs" dev.bindfs.bind_folder "/app-data", "/app", force_user: "root", force_group: "root", o: "nonempty" end config.vm.define "pro" do |pro| pro.vm.network "private_network", ip: "192.168.2.12" pro.vm.hostname = "hzh-pro" end end
安装插件
vagrant plugin install vagrant-bindfs --plugin-clean-sources --plugin-source https://gems.ruby-china.com/
vagrant up
会自动安装bindfs, 需要访问wai 网 加 速 下 载 , 而且要5到10分钟
在dev虚拟机中/app-data目录下创建一个文件, 在主机的Vagrantfile目录下的app目录下也可以看到当前的文件. 说明成功的实现了共享文件.