vagrant虚拟机

准备

  • 下载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.boxcentos7
  • 再次运行vagrant up
  • 指定ip:取消前面的#,修改config.vm.network "private_network", ip: "192.168.33.1" 需要重启vagrant reload
  • 链接虚拟机vagrant ssh
  • 查看ipip 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



    暂未解决

你可能感兴趣的:(vagrant虚拟机)