• 虚拟运行环境管理工具Vagrant详细使用教程


    前言

    最近在学习谷粒商城,谷粒商城在构建虚拟机环境就是使用的vagrant工具来进行快速构建,之前并没有接触过,就进行完整梳理与实战了下,使用完之后感觉真的很香,极其推荐!

    Vagrant是构建在虚拟化技术之上的虚拟运行环境管理工具。通过使用Vagrant我们可以快速去构建我们想要的虚拟环境,同样其搭配virtualbox来进行使用,通过构建vagrantfile我们可以来快速的进行创建、启动、挂起、重启虚拟机,以及其还附带ssh工具来进行连接!

    所有博客文件目录索引:博客目录索引(持续更新)

    一、下载安装Vargant

    对于virtualbox的安装与配置可以看我之前写的一篇博客:VirtualBox安装与配置

    Vargant下载地址:https://www.vagrantup.com/downloads

    官方镜像下载:https://app.vagrantup.com/boxes/search

    • Centos镜像网址:http://cloud.centos.org/centos/
    • Ubuntu镜像下载网站:http://cloud-images.ubuntu.com/

    image-20221103200736710

    链接:https://pan.baidu.com/s/19Xk2S9UDWM3mzmkEUmkWOw 
    提取码:rnyt 
    
    • 1
    • 2

    双击来进行安装即可,安装完成之后需要你去重启,重启好了之后,我们打开cmd来测试一下vagrant是否已经配置好了环境变量:

    vagrant
    
    • 1

    image-20221103202608950

    二、自定义vagrant相关安装路径

    2.1、自定义box安装存储位置

    在安装好vagrant之后,默认的box已经其他存储路径是在c盘的用户目录下的 .vagrant.d 目录下:

    image-20221103205018923

    如何去自定义位置呢?

    新建环境变量,自定义一个文件夹并将环境变量指向过去:

    VAGRANT_HOME
    D:\software\vagrantbox\VirtualBox.vagrant.d
    
    • 1
    • 2

    image-20221103205203469

    同时我们将原本C盘中的内容拷贝过去:

    image-20221103205329642


    2.2、自定义虚拟机安装目录

    在使用vagrant去创建的虚拟机都会默认在C盘中去进行创建,这与我们在virtualbox里的全局设定有关:

    image-20221103213609159

    我们只需要对其默认虚拟电脑位置修改下即可!


    三、配置详解

    Vagrant系列(二)Vagrant的配置文件Vagrantfile详解

    vagrant+virtualbox虚拟机创建全流程,问题处理以及过程讲解,初始安装不放C盘,初始化硬盘空间设置,ssh连接超时,基础镜像下载等等

    内存与cpu核数

    # -*- mode: ruby -*-
    # vi: set ft=ruby :
    
    Vagrant.configure("2") do |config|
      # 对应指定的镜像
      config.vm.box = "centos7"
      # 配置静态网址(与当前电脑的ip地址要对应)
      config.vm.network "private_network", ip: "169.254.5.168" 
      config.vm.provider "virtualbox" do |vb|
          # 内存8G
          vb.memory = "8192"
          # CPU4核
          vb.cpus = 4
      end
    end
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    四、命令大全整理

    # 查询当前管理的盒子
    vagrant box list
    
    # 添加指定的vagrant的box镜像到vagrant中
    # 语法:vagrant box add box的文件路径及文件名 --name centos8,后面-name表示指定名字
    
    # 根据名字删除指定的box
    # 语法:vagrant box remove NAME
    
    
    # ---虚拟机相关命令---
    # 新建虚拟机
    # 语法:vagrant init [boxname]  # 加上boxname 表示使用指定box名创建虚拟机
    
    # 启动虚拟机命令
    vagrant up
    
    # 查看虚拟机状态
    vagrant status
    
    # 停止虚拟机
    vagrant halt
    
    # 暂停虚拟机
    vagrant suspend
    
    # 重启虚拟机
    vagrant reload
    
    # 恢复虚拟机 | 不管虚机是关闭还是暂停状态,甚至是 error 状态,都可以执行 vagrant up 来让虚机恢复运行
    vagrant resume
    
    # 删除虚拟机
    vagrant destroy
    
    # ---辅助命令---
    # 使用vagrant自带的ssh工具去连接当前目录下的虚拟机
    vagrant ssh
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38

    五、实战

    5.1、安装一个centos7虚拟机

    5.1.1、提前准备镜像centos7

    若是想要直接从远程拉取命令安装的可直接跳过这步直接执行:Vagrant init centos/7

    由于从远程拉取默认会从对应的vagrant镜像网站去拉取指定版本的centos,时间肯定会很长,我们采取另一种方式,先把对应centos7的box文件下载下来,安装到vargrant中,接着去进行初始化,一系列操作如下:

    ①下载centos7的box文件

    官网的centos7的镜像:centos7镜像,我们直接去国内的中科大镜像源:centos7-vagrant

    image-20221103204237998

    我们可以通过命令来确定下载源地址:

    vagrant init centos/7
    vagrant up
    
    • 1
    • 2

    image-20221107161333637

    获取到源下载地址:https://vagrantcloud.com/centos/boxes/7/versions/2004.01/providers/virtualbox.box

    直接下载的话会很慢,我这边下好了直接取就可:

    链接:https://pan.baidu.com/s/1ieASF3r35X1wWxpfsw_x_g 
    提取码:dl6z 
    
    • 1
    • 2

    ②将centos7中的box文件添加到vagrant中,并取名字为centos7

    # 指定路径的box文件设置别名为centos7
    vagrant box add D:\software\vagrantbox\boxes\Centos7.box --name centos7
    
    • 1
    • 2

    image-20221107165019061

    命令效果:

    image-20221107165116740


    4.1.2、初始化centos7

    当前初始化时基于本地的centos7的box文件,我们在上节将其名为centos7了。

    初始化命令,此时我们将创建了vagrantfile文件:

    # centos7是之前盒子的别名
    vagrant init centos7
    
    • 1
    • 2

    image-20221103211949860

    在当前目录中就会有一个Vagrantfile文件。


    4.1.3、启动与连接centos7(vagrant自带ssh与ssh图形化连接)

    启动centos7系统

    初始化文件好了之后,我们就来启动这个vagrantfile,执行启动命令:

    vagrant up
    
    • 1

    image-20221103212218741

    此时已经成功启动我们的centos7系统!

    默认的用户名与密码为:

    vagrant
    vagrant
    
    • 1
    • 2

    注意:请在启动命令的文件目录中不要出现中文、空格符的情况!

    配置源内容如下:

    # 备份原yum源
    mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
    # 使用新yum源
    curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.163.com/.help/CentOS7-Base-163.repo
    # 生成缓存
    yum makecache
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    连接centos7

    方式一:使用vagrant的ssh工具来进行连接(无需输入用户名与密码)

    vagrant ssh
    
    • 1

    image-20221103212456149

    方式二:虚拟机显示窗口或者使用ssh连接GUI工具

    虚拟机显示窗口运行:

    image-20221103212604089

    图形化工具连接:

    ①私钥登录

    vagrant默认不允许使用用户名与密码来进行登录,而是使用私钥登录:

    image-20221103215254414

    私钥在当前vagrantfile同路径下的.vagrant目录下:

    C:\Users\93997\Desktop\guli-mall\vagrantfile\centos7\.vagrant\machines\default\virtualbox
    
    • 1

    image-20221103215346014

    ok,此时登录成功!

    image-20221103215424436

    ②用户名与密码登录

    su root   # 默认root密码为vagrant
    
    • 1

    我们需要修改配置文件:

    vi /etc/ssh/sshd_config
    
    • 1

    修改配置信息如下:

    PermitRootLogin yes        # 允许直接通过root账号登录
    PasswordAuthentication yes # 可以通过密码登录
    
    • 1
    • 2

    重启sshd令其生效:

    sudo systemctl restart sshd
    
    • 1

    接着我们就可以使用用户名与密码来进行登录了!


    额外:自定义ip地址连接

    默认的话就是通过127.0.0.1也就是本地地址及通过端口转发来进行访问的虚拟机,这样的话对于开发不太方便,我们可以去修改固定的IP地址,操作如下:

    ①首先查看当前你电脑的virtualbox的ip地址

    image-20221103212936705

    ②根据子网掩码我们自定义一个ip地址:169.254.5.168

    打开刚刚的vagrantfile,来进行编辑:

    image-20221103213222214

    接着我们来尝试虚拟机与主机互ping一下:

    image-20221103214357663

    最后尝试使用下SSH图形化工具finalshell连接一下。

    参考资料

    [1]. Vagrant 入门使用教程

    [2]. 使用Vagrant在命令行快速创建虚拟机

    [3]. 解决使用第三方软件连接vagrant虚拟机连接问题

    [4]. 修改vagrant,virtualbox数据目录

    [5]. Vagrant初始化一个centos7虚拟机、配置Vagrant可以让客户端工具通过root账号登录

    [6]. vagrant安装的centos7开启root远程连接登入

  • 相关阅读:
    Qt 自定义控件-支持换行和点击事件的Label
    .net----委托和事件
    面试常问:HTTP 1.0 和 HTTP 1.1 有什么区别?
    怎么将vue的移动端项目打包成手机的app软件apk格式的。hbuilderx 云打包。
    Win7旗舰版64位桌面创建32位IE方法
    【STM32】标准库-自定义BootLoader
    计算机视觉(CV)技术的优势和挑战
    linux zookeeper kafka_2.12-2.2.0 集群
    DeepLearning[花书] 参考资料
    Spring Security(十九)--OAuth2:实现授权服务器(下)--环境准备以及骨架代码搭建
  • 原文地址:https://blog.csdn.net/cl939974883/article/details/127684234