开始使用 vagrant Ⅰ (vagrant 安装和基本的配置)
Vagrant是一个基于Ruby的工具,用于创建和部署虚拟化开发环境。他依赖于 VirtualBox ,后来也支持了 VMWare (有兴趣的可以去了解)
英文能力不错的同学可以看官方的详细文档: https://www.vagrantup.com/docs/
安装 Vagrant
- 下载并安装 Virtualbox
- 下载并安装 Vagrant
vagrant box基本命令
vagrant box list
//列出本地环境中所有的boxvagrant box add box-name(box-url)
//添加box到本地vagrant环境vagrant box update box-name
//更新本地环境中指定的boxvagrant box remove box-name
//删除本地环境中指定的boxvagrant box repackage box-name
//重新打包本地环境中指定的box- https://app.vagrantup.com/boxes/search //官方的 box 库
vagrant 基本命令
vagrant init [box-name]
// 在空文件夹初始化虚拟机vagrant up
//在初始化完的文件夹内启动虚拟机vagrant ssh
//ssh登录启动的虚拟机vagrant suspend
//挂起启动的虚拟机vagrant reload
//重启虚拟机vagrant halt
//关闭虚拟机vagrant status
//查找虚拟机的运行状态vagrant destroy
//销毁当前虚拟机
网络配置
1. Forwarded port(端口映射)
是指将宿主计算机的端口映射到虚拟机上的某个端口上,访问宿主计算机的该端口时,请求实际会被转发到虚拟机上指定的端口
config.vm.network :forwarded_port, guest: 80, host: 8889
优点:简单、容易理解、容易实现外网访问虚拟机。缺点:需映射很多端口时较麻烦、
不支持在宿主机器上使用小于1024的端口来转发(如:不能使用SSL的443端口来进行https连接)。
2. Private network(私有网络)
这种网络配置下,只有主机可以访问虚拟机,如果多个虚拟机设置定在同一个网段也可以相互访问,
当然虚拟机也是可以访问外部网络的。
config.vm.network "private_network", ip: "192.168.50.4" # 固定IP
还可以设置动态IP,配置语法如下:
config.vm.network "private_network", type: "dhcp"
优点:安全,只能自己访问。缺点:因私有原有,所以其他团队成员不能和你协作。
3. Public network(公有网络)
这种配置下,虚拟机享受实体机一样的待遇,一样的网络配置,
vagrant 1.3版本以后这种配置也支持设定固定IP
config.vm.network "public_network", ip: "192.168.50.4"
还可以设置桥接网卡,配置语法如下:
config.vm.network "public_network", bridge: "en1: Wi-Fi (AirPort)"
优点:方便团队协作,别人可以访问你的虚拟机。缺点:需要有网络,有路由器分配IP
共享文档
1. NFS (适用于Mac OS宿主机), 配置语法:
config.vm.synced_folder "/hostPath", "/guestPath", type: "nfs"
2. RSync , 配置语法:
config.vm.synced_folder "/hostPath", "/guestPath", type: "rsync"
3. SMB (适用于Windows宿主机), 配置语法:
config.vm.synced_folder "/hostPath", "/guestPath", type: "smb"
4. VirtualBox
- 如果你的 vagrant 使用 virtualbox 的 provider ,这是默认的共享目录的类型。这些同步文件夹使用ValualBox共享文件夹系统将文件更改从客户机同步到主机,反之亦然。
虚拟机的基本配置
1. 自定义虚拟机名称
config.vm.provider "virtualbox" do |vb|
vb.name = "ubuntu-hafiz"
end
2. 自定义虚拟机主机名称
config.vm.hostname="hafiz"
3. 自定义虚拟机内存和CPU
config.vm.provider "virtualbox" do |vb|
vb.name = "ubuntu-imooc"
vb.memory = "1024"
vb.cpus = 2
end
打包分发
当我们基于一个box启动一个虚拟机以后,我们在部署了专属自己的环境那这个时候我们想要把自己的这套配置好的环境共享给别人怎么办呢?
答案是将虚拟机打包分发
vagrant package [--output new_box_name]