美文网首页
vagrant虚拟机

vagrant虚拟机

作者: 呦丶耍脾气 | 来源:发表于2022-12-01 15:30 被阅读0次

    准备

    使用

    • 打开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虚拟机

          本文链接:https://www.haomeiwen.com/subject/weajfdtx.html