Vagrant 总结

引言
 
  本文将讨论Vagrant基础应用,高级应用,基于Vagrant 的虚拟机优化,Vagrant的优势及区别等四部分
 
  参考资料:
Vagrant是什么
 

  Vagrant是构建在虚拟化技术之上的虚拟机运行环境管理工具。

  主要的功能:
    1. 建立和删除虚拟机
    2. 配置虚拟机运行参数
    3. 管理虚拟机运行状态
    4. 自动化配置和安装开发环境
    5. 打包和分发虚拟机运行环境

  vagrant可以支持多种虚拟环境,例如 VirtualBox, VMware, AWS, OpenStack等

Vagrant的作用
 
  两方面:

    个人:跨平台、可移动、自动化部署无需人工参与
    公司:节省人力成本、统一开发环境

 
Vagrant常用命令总结
# 查看已有的box
$ vagrant box list

# 新建加一个box
$ vagrant box add [此次镜像名称] [源镜像]

# 删除指定box
$ vagrant box remove [名称]

# 初始化配置vagrantfile
$ vagrant init

# 启动虚拟机
$ vagrant up

# ssh登陆虚拟机
$ vagrant ssh

$ 挂起虚拟机
# vagrant suspend

# 重启虚拟机
$ vagrant reload

# 关闭虚拟机
$ vagrant halt

# 查看虚拟机状态
$ vagrant status

# 删除虚拟机
$ vagrant destroy

# 打包当前环境下为 box镜像
$ vagrant paskage --output xxx.box

初始化虚拟机步骤:

1. 添加镜像
$ vagrant box add [box名称名称] [路径/名称.box]

2. 初始化虚拟机配置
$ vagrant init [box名称]

3. 启动虚拟机
$ vagrant up
 Vagrant高级知识
 
  本段主要操作box下Vagrantfile 文件
 
  1. 端口转发  将本机具体端口转发到虚拟机端口
  
# host=本机端口,guest=虚拟机端口
config.vm.network "forwarded_port", host:8888, guest:81

2. 共享目录    将本机具体目录和虚拟机共享

三种可选共享方式:
  1. Basic Usage # 基础共享方式【默认】
  2. NFS # Mos系统 共享目录方式
  3. SMB # Windows系统 共享目录方式
  主要是为了使本机的文件更改之后能够更快的同步到虚拟机中,更快的生效

  
# 本机目录同步到虚拟机目录 :nfc[可选项]
config.vm.synced_folder "/Users/vincent/code/", "/home/www", :nfc => true
注意:
#   1. 需要配置私有网络IP
#   2. Nginx 的sendfile on 需要改为 off;不然同步目录速度较慢

3. 网络配置  三种网络配置方式

公有网络

# 要和本机网段一致
config.vm.network "public_network", ip: "192.168.33.10"

私有网络

config.vm.network "private_network", ip: "192.168.33.10"
 Vagrant 虚拟机优化
   
  本段主要针对Vagranfile 中的属性修改
  
# 设置虚拟机主机名
config.vm.hostname = "ueba"

config.vm.provider "virtualbox" do |vb|
  # 设置虚拟机内存 1024M
  vb.memory = "1024"

  # 设置虚拟机名称
  vb.name = "vm_name"

  # 设置cpu 数量
  vb.cpus = 2
end
总结
 
  这里对Vagrant和docker简述一下区别:
 

  1、docker只能执行docker所定义的容器。

  2、docker缺乏灵活的隔离方案(docker只能运行在Linux主机环境中)。

  3、 vagrant可以支持多种虚拟环境,例如 VirtualBox, VMware, AWS,

  4、 vagrant 可以更好的配置网络和文件共享。比如:vagrant可以给一个VM配置静态IP和端口数据转发。不论你使用的VirtualBox还是 VMware,vagrant都可以很好的完成配置。对于文件共享来说,vagrant提供了多种文件挂载方案供你考虑。如果你使用了docker,那么 这些事情就都需要你亲自动手来做了。

  5. vagrant 1.6中集成了docker-based development environments。所以在MAC和Windows环境中,vagrant会自动启动一个虚拟机来执行docker,这样就达到了docker的跨平台化。而背后例如网络,文件等等操作都是vagrant默默完成的。

  6. 针对于场景来说,Vagrant 适合用来管理虚拟机,而docker适合用来管理应用环境。

原文地址:https://www.cnblogs.com/houdabao/p/9620678.html