准备
- 下载VirtualBox,安装
- 下载vagrant,安装
- 在vagrant-cloud镜像仓库可以查看有哪些镜像
使用
- 打开window cmd窗口,运行下面命令即可初始化一个centos7系统
vagrant init centos/7
- 此时目录中会生成一个
Vagrantfile
文件
- 运行
vagrant up
这种方式下载镜像会有点慢,可以直接去镜像仓库或者复制命令运行中的下载链接下载
- 将下载好的文件放到当前目录
- 然后运行命令“vagrant box add centos7 ./virtualbox.box”
- 通过命令
vagrant box list
可以看到
- 打开目录中的
Vagrantfile
修改config.vm.box
为centos7
- 再次运行
vagrant up
- 指定ip:取消前面的
#
,修改config.vm.network "private_network", ip: "192.168.33.1"
需要重启vagrant reload
哦- 链接虚拟机
vagrant ssh
- 查看ip
ip addr
lo是回环地址,eth0是虚拟机的IP地址,IP地址是10.0.2.15
vagrant命令
vagrant box list #查询vagrant 已经管理的 Box
vagrant box add [name] path #将 box 添加到vagrant 中
vagrant box remove NAME #删除box命令
vagrant init [boxname] #加上boxname 表示使用哪个box 创建虚拟机
vagrant up [vagrant name] #启动虚拟机
vagrant status #虚拟机状态
vagrant ssh [vagrant name] #连接虚拟机[可以指定需要连接的虚拟机],也可以在 VirtualBox 的终端上登录系统,默认的登录用户名和密码都是 vagrant
vagrant halt #停止虚拟机
vagrant suspend #暂停虚拟机
vagrant resume #恢复虚拟机,不管虚机是关闭还是暂停状态,甚至是 error 状态,都可以执行 vagrant up 来让虚机恢复运行
vagrant destroy #删除虚拟机
vagrant开启多个虚拟机
只需要把下面代码放到Vagrantfile
文件的end
前
config.vm.define "centos1" do |vb|
config.vm.provider "virtualbox" do |v|
v.memory = 1024
v.cpus = 1
end
vb.vm.host_name = "centos1"
vb.vm.network :public_network, ip: "192.168.1.21"
vb.vm.box = "centos7"
end
config.vm.define "centos2" do |vb|
config.vm.provider "virtualbox" do |v|
v.memory = 1024
v.cpus = 1
end
vb.vm.host_name = "centos2"
vb.vm.network :public_network, ip: "192.168.1.22"
vb.vm.box = "centos7"
end
config.vm.define "centos3" do |vb|
config.vm.provider "virtualbox" do |v|
v.memory = 1024
v.cpus = 1
end
vb.vm.host_name = "centos3"
vb.vm.network :public_network, ip: "192.168.1.23"
vb.vm.box = "centos7"
end
vagrant up:开启所有
vagrant up centos1:开启centos1
的虚拟机,其他命令也支持
共享目录
共享目录可以设置Vagrant在宿主机(host)和虚拟机(guest)之间同步文件,这样做的好处是可以在宿主机上开发,在虚拟机上运行。
vagrant默认的共享目录在宿主机上是和Vagrantfile所在目录,在虚拟机上是/vagrant目录。但是这个目录只有在每次启动的时候才会同步
如果要共享其他的文件夹同时需要实时同步,还是在Vagrantfile中进行配置
禁用默认的同步目录
在虚拟机的配置文件里,添加一行配置
config.vm.synced_folder "./vagrant", "/home/vagrant", disabled: true
config.vm.synced_folder
配置的是同步目录,"."表示同步目录在当前主机下的位置,一个点表示当前目录,这是一个相对位置,相对的是当前这个配置文件(Vagrantfile)。后面的 "/vagrant" 是同步目录在虚拟机上的位置。最后又用了一个disabled
选项,值设置成了 true,意思就是禁用这个同步目录。重新启动虚拟机(vagrant reload),可以让这个配置生效。
添加同步目录
在虚拟机的配置文件里可以添加需要的同步目录。先在存储在本地电脑上的项目下面创建一个目录,名字是 vagrant,随便建一个文件在这个目录的下面。然后打开 Vagrantfile,添加一行配置:
config.vm.synced_folder "./vagrant", "/home/vagrant/data"
此种方式默认是
Virtualbox
,Virtualbox 类型的同步目录性能低下,我们先介绍两种比它更快的同步目录
- NFS 类型的同步目录
macOS 平台用户可以使用 NFS 类型的共享目录
加了一个 type 属性,值设置成了 nfs,表示这是一个 NFS 类型的共享目录。重新启动虚拟机,会出现跟下面类似的日志,说明 Vagrant 正在配置 NFS 类型的共享目录。启动时可能会要求你输入当前登录到电脑上的用户的密码。
- SMB 类型的同步目录
Windows 用户可以使用 SMB 这种类型的同步目录。文档上说使用这种类型的共享目录需要在虚拟机上安装 smbfs 或 cifs,Vagrant 应该会自动为你安装好。 不过我测试的结果是并没有安装好挂载 SMB 类型同步目录需要的这些东西。
如果没有安装的话先登录到虚拟机,然后手工安装一下这个 cifs-utils,在虚拟机内部执行:sudo yum install cifs-utils -y
打开 Vagrantfile,添加一行配置:
config.vm.synced_folder "app", "/mnt", type: "smb"
挂载 SMB 同步目录需要你输入登录到 Windows 系统的用户名与密码,你也可以在配置同步目录的时候,指定登录用的用户名与密码,像这样:
config.vm.synced_folder "app", "/mnt", type: "smb", smb_username: "wanghao", smb_password: "密码"
没有设置过win登陆账号的,可以默认管理员
Administrators
,密码为空
问题
-
报错1
暂未解决
网友评论