news 2026/10/11 1:19:45

VirtualBox+Vagrant快速搭建虚拟机【最新详细教程】

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
VirtualBox+Vagrant快速搭建虚拟机【最新详细教程】

VirtualBox+Vagrant快速搭建虚拟机

  • 📖1.安装VirtualBox
    • ✅下载VirtualBox
    • ✅安装
  • 📖2.安装Vagrant
    • ✅下载Vagrant
    • ✅安装
  • 📖3.搭建Centos7系
    • ✅1.初始化Vagrantfile并启动
    • ✅2.配置网络ip地址
    • ✅3.配置账号密码登录
    • ✅4.配置网卡
    • ✅5.配置yum国内加速
  • 📖4.搭建Ubuntu20.04
    • ✅1.初始化Vagrantfile并启动
    • ✅2.配置网络ip地址
    • ✅3.配置账号密码登录
    • ✅4.配置网卡
    • ✅5.配置apt国内加速
  • 📖6.搭建4台Ubuntu集群
    • ✅1.循环写法
    • ✅2.启动和验证
    • ✅4.管理命令
    • ✅5.资源不够时的降配方案

在安装virtualBox和vagrant环境前,建议windows10系统使用VirtualBox-6.0.10_vagrant_2.2.5环境,windows11系统使用virtualBox-7.0.8_vagrant_2.3.7环境,亲测可以,因为VirtualBox-6.0.10_vagrant_2.2.5在windows10系统会遇到一些问题,这里避坑一下:

virtualBox-7.0.8_vagrant_2.3.7全套下载:

123云盘:https://www.123pan.com/s/4brbVv-B81WA

百度云盘:https://pan.baidu.com/s/1P_MkCLmBQx5PupfhGwoQpw?pwd=pt8u

VirtualBox-6.0.10_vagrant_2.2.5全套下载:

123云盘:https://www.123pan.com/s/4brbVv-g81WA

百度云盘:https://pan.baidu.com/s/1wc0jMiw3K21IuJ8rR7LGzA?pwd=dzic

📖1.安装VirtualBox

VirtualBox是免费开源的且安装过程简单,允许用户快速完成安装

✅下载VirtualBox

VirtualBox就是类似VMware搭载虚拟机的软件。

VirtualBox下载: https://download.virtualbox.org/virtualbox/6.0.10/VirtualBox-6.0.10-132072-Win.exe

百度云盘下载:https://pan.baidu.com/s/1U-5bwsGHixY35tzcfJR0Hg?pwd=gb0l

123云盘下载:https://www.123pan.com/s/4brbVv-NC1WA

✅安装

注意:安装之前需要将电脑的cpu虚拟化进行开启,我们可以通过快捷键Ctrl+Shift+Esc打开任务管理器查看性能中的cpu虚拟化是否开启。

如果没有开启,则需要重启电脑按F12或者其他键进入系统设置界面,不同型号电脑不一样,将cpu虚拟化开启即可。

安装完后呈现如下界面,安装的过程比较简单选好要安装的位置即可。

1.双击安装包,然后下一步

2.选择安装路径,然后默认下一步

3.选择是

4.点击下一步安装

5.点击完成

6.安装成功后打开显示如下界面

接下来我们需要在VirtualBox上面进行安装Linux系统,正常情况下我们需要进行新建,选择镜像位置然后一步步下去安装,这样我们会觉得很麻烦,所以我们可以使用Vagrant技术进行一键部署Linux系统,如下继续操作。

📖2.安装Vagrant

✅下载Vagrant

Vagrant是一站式搭建虚拟机

Vagrant安装包下载: https://releases.hashicorp.com/vagrant/2.2.5/vagrant_2.2.5_x86_64.msi

百度云盘下载:https://pan.baidu.com/s/1v-vfdRFgLeNNWeTJRbDZvQ?pwd=7wfw

123云盘下载:https://www.123pan.com/s/4brbVv-RC1WA

官网镜像仓库地址:https://app.vagrantup.com/boxes/search

✅安装

1.双击安装包,然后下一步

2.勾选并下一步

3.选择安装路径,并下一步

4.开始安装

5.安装后直接点击完成,会弹框确认是否现在重启,选择no稍后重启

安装过程也是比较简单,选择好自己要安装的路径即可,安装后我们可以打开cmd进行验证是否安装成功。

win+r输入cmd,进入dos控制台界面,输入vagrant -v命令,显示版本信息则安装成功。

当我们准备了VirtualBox和Vagrant环境后,搭建虚拟机系统只需要两步

  • 第一步:在指定文件目录下打开cmd,初始化生成Vagrantfile文件
  • 第二步:启动刚生成的Vagrantfile文件

📖3.搭建Centos7系

当我们准备了VirtualBox和Vagrant环境后,搭建Centos7系统只需要两步

  • 第一步:在指定文件目录下打开cmd,初始化生成Vagrantfile文件
  • 第二步:启动刚生成的Vagrantfile文件

✅1.初始化Vagrantfile并启动

首先进入指定文件目录下打开cmd,然后使用下面初始化命令进行生成Vagrantfile文件。

在指定目录的导航栏输入cmd并回车,会自动在dos界面打开当前目录

方式一:直接初始化,然后执行初始化生成Vagrantfile文件即可

# 初始化vagrant init centos/7

然后执行初始化生成Vagrantfile文件即可

显示上面则代表成功,意思是说Vagrantfile已经放在了这个目录中。你现在可以“vagrant up”你的第1个虚拟环境了,同时可以在“vagrantup.com”上的文档以获取有关使用Vagrant的更多信息。

此时会在F:\virtual_machine\centos7指定文件目录下生成Vagrantfile文件。

直接使用vagrant up命令启动刚生成的Vagrantfile文件即可。

此时我们只需要慢慢等待一步步下载镜像。

方式二:手动下载链接初始化,解决直接初始化慢问题

如果下载很慢可以提前手动下载镜像文件,参考网站:解决 vagrant up下载太慢的问题

手动下载CentOS7镜像(这里的2004_01可以修改成自己想要的版本,这里下载很快的,一两分钟就搞定了):

https://cloud.centos.org/centos/7/vagrant/x86_64/images/CentOS-7-x86_64-Vagrant-2004_01.VirtualBox.box

  1. 下载后放到指定目录

  1. 手动添加 box
vagrant boxaddcentos/7 CentOS-7-x86_64-Vagrant-2004_01.VirtualBox.box

  1. 初始化并启动
vagrant init centos/7 vagrant up

稍等一会就能看到我们的虚拟机进来了

安装结束后使用vagrant命令进行连接

// 连接 vagrantssh// 退出exit其他命令如下: // 启动 vagrant up // 重启 vagrant reload //停止 vagranthalt//暂停 vagrantsuspend//销毁 vagrant destroy

到此一台centos7的Linux系统就一站式部署好了,当前用户为vagrant用户,而root用户的密码为vagrant。

注意:如果你在vagrant up后一直卡在default:SSH auth method: private key,并且超时,可以提升virtualbox和vagrant的版本,下面提供一个版本,安装还是和上面一样,在windows11系统亲测可以。

virtualBox-7.0.8_vagrant_2.3.7全套下载:

123云盘:https://www.123pan.com/s/4brbVv-B81WA

百度云盘:https://pan.baidu.com/s/1P_MkCLmBQx5PupfhGwoQpw?pwd=pt8u

✅2.配置网络ip地址

为什么要配置网络,因为VirtualBox使用的是转发规则,如果没有配置固定的网络ip地址的话,以后每一次完成别的软件都要设置转发规则,比较麻烦,比如说安装mysql需要在windows上设置映射端口到linux中的3306端口。

修改 Vagrantfile中的config.vm.network "private_network", ip: "192.168.56.10",而这里的ip需要在物理机下使用 ipconfig 命令找到。

最后在安装路径中的Vagrantfile文件中将如下命令的注释打开,前三位和上面IP地址一样,最后一位可以自己定。

设置完后exit退出再使用vagrant reload命令进行重启,可以使用ip addr命令进行查看是否生效。

// 退出虚拟机exit// 重启 vagrant reload // 连接 vagrantssh// 查看IPipaddr

成功后主机和linux便可以互相ping通。

✅3.配置账号密码登录

在没有配置账号密码登录之前,我们只能通过ssh方式登录,如vagrant ssh,这样的话我就不能使用第三方ssh 连接工具直接连接,首先vagrant ssh 进去系统之后。

// 登陆root用户(密码是vagrant)su// 编辑ssh配置文件vi/etc/ssh/sshd_config // 开启密码权限(把 no 改成 yes) PasswordAuthenticationyes// 重启服务servicesshd restart

以后可以使用提供的 ssh 连接工具直接连接。

✅4.配置网卡

如果能联网并且能够ping通www.baidu.com则可以省略这一步。

1.确认能不能联网(NAT 网卡自动上网,一般不需要配)

ping-c4www.baidu.com

2.找到网卡位置

ipaddrcd/etc/sysconfig/network-scripts

Vagrant 虚拟机通常两块网卡:

网卡名用途
eth0NAT,自动联网,不用配
eth1Host-Only(private_network),配静态 IP

3.编辑网卡配置

viifcfg-eth1

添加如下配置:

GATEWAY=192.168.56.1# 比如ip为192.168.56.10DNS1=114.114.114.114DNS2=8.8.8.8

✅5.配置yum国内加速

如果你的yum下载不了东西可以尝试下面修改更新yum,一键替换为阿里云源:

# 1. 备份原配置mv/etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup# 2. 替换为阿里云源curl-o/etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo# 3. 清理旧缓存并生成新缓存yum clean all yum makecache

回滚方案:

mv/etc/yum.repos.d/CentOS-Base.repo.backup /etc/yum.repos.d/CentOS-Base.repo yum clean all&&yum makecache

注意:VirtualBox 会与包括但不限于如下软件冲突,需要卸载这些软件,然后重启电脑;

冲突的软件:红蜘蛛,360,净网大师(有可能)等

📖4.搭建Ubuntu20.04

当我们准备了VirtualBox和Vagrant环境后,搭建Centos7系统只需要两步

  • 第一步:在指定文件目录下打开cmd,初始化生成Vagrantfile文件
  • 第二步:启动刚生成的Vagrantfile文件

✅1.初始化Vagrantfile并启动

首选进入指定文件目录下打开cmd,然后使用下面初始化命令进行生成Vagrantfile文件。

方式一:直接初始化,然后执行初始化生成Vagrantfile文件即可

# 1. 初始化vagrant init ubuntu/focal64# 2. 查看是否添加成功vagrant box list# 3. 初始化并启动vagrant init ubuntu/focal64 vagrant up

方式二:手动下载链接初始化,解决直接初始化慢问题

下载地址:https://cloud-images.ubuntu.com/focal/current/

找文件名带vagrant的,例如:focal-server-cloudimg-amd64-vagrant.box

# 1. 手动添加 boxvagrant boxaddubuntu20.04 focal-server-cloudimg-amd64-vagrant.box# 2. 查看是否添加成功vagrant box list# 3. 初始化并启动vagrant init ubuntu20.04 vagrant up

注意:vagrant box add后面跟的名字可以自定义(如my-ubuntu20),后续vagrant init用同样的名字即可。

安装结束后使用vagrant命令进行连接

// 连接 vagrantssh// 退出exit其他命令如下: // 启动 vagrant up // 重启 vagrant reload //停止 vagranthalt//暂停 vagrantsuspend//销毁 vagrant destroy

到此一台ubuntu的Linux系统就一站式部署好了,当前用户为vagrant用户,而root用户的密码为vagrant。

在virtualBox也可以直接管理启动

注意:如果你在vagrant up后一直卡在default:SSH auth method: private key,并且超时,可以提升virtualbox和vagrant的版本,下面提供一个版本,安装还是和上面一样,在windows11系统亲测可以。

virtualBox-7.0.8_vagrant_2.3.7全套下载:

123云盘:https://www.123pan.com/s/4brbVv-B81WA

百度云盘:https://pan.baidu.com/s/1P_MkCLmBQx5PupfhGwoQpw?pwd=pt8u

✅2.配置网络ip地址

修改 Vagrantfile中的IP,有注释则打开。

config.vm.network"private_network", ip:"192.168.56.10"

IP设置多少,需要在cmd下使用 ipconfig 命令找到,可能是以太网适配器 VirtualBox Host-Only Network:,也可能是以太网适配器 以太网 2。

如果都没看到可以进入virtualBox目录下,执行下面命令:

.\VBoxManage.exe list hostonlyifs

设置完后exit推出再使用vagrant reload命令进行重启,可以使用ip addr命令进行查看是否生效。

// 退出虚拟机 exit // 重启 vagrant reload // 连接 vagrant ssh // 查看IP ip addr

为什么要配置网络,因为VirtualBox使用的是转发规则,如果没有配置固定的网络ip地址的话,以后每一次完成别的软件都要设置转发规则,比较麻烦,比如说安装myql需要在windows上设置映射端口到linux中的3306端口。

✅3.配置账号密码登录

在没有配置账号密码登录之前,我们只能通过ssh方式登录,如vagrant ssh,这样的话我就不能使用第三方ssh 连接工具直接连接,首先vagrant ssh 进去系统之后。

// 直接进 root shellsudo-i或sudosu- // root 设密码后,su 就能用刚设的密码登录了sudopasswdroot // 编辑ssh配置文件sudonano/etc/ssh/sshd_config // 开启密码权限,可以ctrl + w 搜索 PasswordAuthenticationyespermitrootloginyes// 保存:ctrl + x 后回车即可 // 重启服务并验证sudoservicesshd restartsudosshd-T|grep-iE"passwordauthentication|permitrootlogin"

以后可以使用提供的 ssh 连接工具直接连接。

如果连不上可以如下处理:

# 1. 确认覆盖文件 ls /etc/ssh/sshd_config.d/ sudo cat /etc/ssh/sshd_config.d/*.conf | grep -i passwordauthentication # 2. 改掉它(二选一) # 方法一:直接编辑改成 yes sudo nano /etc/ssh/sshd_config.d/60-cloudimg-settings.conf # 方法二:删掉,让主配置文件说了算 sudo rm /etc/ssh/sshd_config.d/60-cloudimg-settings.conf # 3. 重启并验证 sudo service ssh restart sudo sshd -T | grep -iE "passwordauthentication|permitrootlogin"

预期输出变成:

passwordauthentication yes

以后注意,SSH 配置生效优先级(高 → 低):

/etc/ssh/sshd_config.d/*.conf ← 最优先 /etc/ssh/sshd_config ← 其次

所以之前只改主文件没用。sshd -T显示的就是最终生效值,改完配置看它变没变,比猜快得多。

✅4.配置网卡

如果能联网并且能够ping外网ip

1.先确认能不能联网(NAT 网卡自动上网,一般不需要配)

ping -c 4 www.baidu.com # ping 外网(走 NAT)

2.找到网卡位置

ipaddr

Vagrant 虚拟机通常两块网卡:

网卡名用途
enp0s3/eth0NAT,自动联网,不用配
enp0s8/eth1Host-Only(private_network),配静态 IP

3.编辑 netplan 配置

cd/etc/netplanls

你机器上会有两个文件(都保留,netplan 会按文件名顺序合并生效):

50-cloud-init.yaml ← 管 enp0s3(NAT,DHCP) 50-vagrant.yaml ← 管 enp0s8(Vagrant 自动生成的静态 IP)

注意:如果你 Vagrantfile 里写了private_network ip:,50-vagrant.yaml 已经自动生成好了,不用手动配。要改 IP 就改 Vagrantfile 然后vagrant reload。

4.写入配置

sudo nano 50-vagrant.yaml

场景 1:静态 IP(手动指定地址)

network:version:2renderer:networkdethernets:enp0s8:# 网卡名,以 ip addr 看到的为准dhcp4:noaddresses:[192.168.56.10/24]nameservers:addresses:[114.114.114.114,8.8.8.8]

脚本替换:

sudotee/etc/netplan/50-vagrant.yaml>/dev/null<<'EOF' network: version: 2 renderer: networkd ethernets: enp0s8: dhcp4: no addresses: [192.168.56.10/24] nameservers: addresses: [114.114.114.114, 8.8.8.8] EOFsudonetplan apply

场景 2:DHCP 自动获取

network:version:2renderer:networkdethernets:enp0s8:dhcp4:true
文件管哪个网卡手动改哪个
50-cloud-init.yamlenp0s3(NAT)❌ cloud-init 管的,重启会被重新生成覆盖,改了也白改
50-vagrant.yamlenp0s8(静态 IP)✅这才是该编辑的文件

5.应用配置

sudonetplan try# 先试,120秒无操作自动回滚,防断连sudonetplan apply# 确认没问题后正式应用

6.验证

ipaddr show enp0s8ping-c4www.baidu.com

✅5.配置apt国内加速

如果你的apt下载慢,可以尝试下面修改更新apt,一键替换(推荐 sed 方式,只改域名不动结构)

# 1. 备份 sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup-$(date +%Y%m%d) # 2. 替换为阿里云(官方源和 security 源域名都换掉) sudo sed -i 's|http://archive.ubuntu.com|https://mirrors.aliyun.com|g; s|http://security.ubuntu.com|https://mirrors.aliyun.com|g' /etc/apt/sources.list # 3. 验证替换结果 grep "^deb" /etc/apt/sources.list

预期输出:

deb https://mirrors.aliyun.com/ubuntu focal main restricted deb https://mirrors.aliyun.com/ubuntu focal-updates main restricted ... deb https://mirrors.aliyun.com/ubuntu focal-security main restricted
# 4. 刷新索引 + 测试sudoaptupdatesudoaptinstall-yhtop# 装个小软件测速

回滚方案:

sudocp/etc/apt/sources.list.backup-xxxx /etc/apt/sources.listsudoaptupdate

📖6.搭建4台Ubuntu集群

下面直接给出4台完整配置。

集群规划(4台节点,宿主机建议16G内存以上):

节点IP内存CPU
node1192.168.56.112G2
node2192.168.56.122G2
node3192.168.56.132G2
node4192.168.56.142G2

注意:笔记本8G内存的话,每台改成1G内存1核CPU,4台共4G。

✅1.循环写法

节点定义区整段替换为:

Vagrant.configure("2")do|config|config.vm.box="ubuntu/focal64"config.vm.box_check_update=false# Replace apt source with Aliyun mirror (runs on every node)config.vm.provision"shell",inline:<<-SHELLsed -i 's|http://archive.ubuntu.com|https://mirrors.aliyun.com|g; s|http://security.ubuntu.com|https://mirrors.aliyun.com|g' /etc/apt/sources.list apt-get updateSHELL# Write /etc/hosts so nodes can reach each other by nameconfig.vm.provision"shell",inline:<<-SHELLfor i in 1 2 3 4; do echo "192.168.56.$((10+i)) node$i" >> /etc/hosts doneSHELL# ============ node definitions (loop) ============# Change (1..4) to adjust node count(1..4).eachdo|i|# loop 4 times, one node per iterationconfig.vm.define"node#{i}"do|node|# machine name: node1 ~ node4node.vm.hostname="node#{i}"# hostname inside the VMnode.vm.network"private_network",ip:"192.168.56.#{10+i}"# Host-Only static IP: .11 ~ .14node.vm.provider"virtualbox"do|vb|vb.name="cluster-node#{i}"# display name in VirtualBox GUIvb.memory=2048# 2G RAMvb.cpus=2# 2 coresendendendend

需要改的地方只有 4 处,都标了箭头:

位置改什么
(1..4)节点数量(如 6 台改(1..6))
192.168.56.IP 网段(必须和宿主机 Host-Only 网卡同网段,用ipconfig查)
vb.memory = 2048每台内存,宿主机8G就改 1024
vb.cpus = 2每台CPU核数

✅2.启动和验证

// 校验,预期输出:Vagrantfile validated successfully. vagrant validate // 启动全部4台 vagrant up // 查看状态,应为4台 running vagrant status // 一键停止全部(正常关机) vagranthalt
需求命令效果
一键启动vagrant up所有节点开机
一键停止vagrant halt所有节点正常关机(数据安全)
一键暂停vagrant suspend挂起(开机最快,占磁盘)
一键删除vagrant destroy -f全部删除(配置在 Vagrantfile,随时重建)
查看状态vagrant status各节点运行情况

预期输出:

Current machine states: node1 running (virtualbox) node2 running (virtualbox) node3 running (virtualbox) node4 running (virtualbox)

互访测试:

// 登录 node1 vagrantsshnode1 // 依次ping其他3台(hosts已配好,直接用名字)ping-c2node2ping-c2node3ping-c2node4

✅4.管理命令

vagrantsshnode4 // 登录 node4 vagranthaltnode4 // 只关 node4 vagrant reload node4 // 只重启 node4 vagrant destroy node4 // 只删 node4

做成 Windows 双击运行的脚本(更"一键"),在项目目录新建两个文件:

启动.bat

@echo off cd /d F:\virtual_machine\ubuntu-cluster vagrant up pause

停止.bat

@echo off cd /d F:\virtual_machine\ubuntu-cluster vagrant halt pause

以后双击对应文件即可,不用开 PowerShell。

✅5.资源不够时的降配方案

4台 × 2G = 8G 内存,宿主机吃紧就降配:

vb.memory=1024# 每台1Gvb.cpus=1# 每台1核

改完vagrant reload生效。

如果还是卡,可以只启动部分节点(比如只起 node1、node2 做测试),vagrant status里未启动的显示not created或poweroff,不影响其他节点。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/11 1:19:02

Java中的类和对象(上)

1. 面向对象的初步认知 1.1 什么是面向对象 Java是一门纯面向对象的语言(Object Oriented Program&#xff0c;简称OOP)&#xff0c;在面向对象的世界里&#xff0c;一切皆为对象。面向对象是解决问题的一种思想&#xff0c;主要依靠对象之间的交互完成一件事情。用面向对象的思…

作者头像 李华
网站建设 2026/10/11 1:19:00

CMS61850客户端

近一年都比较忙&#xff0c;很久没有更新文档了。这次抽了点时间&#xff0c;把CMS61850的客户端再补上。方便大家进一步的学习。当然61850相关的文档已经写的快吐了。不出意外&#xff0c;这应该是最后一篇关于61850的文章了。 本次提供的demo&#xff0c;可直接在windows上运…

作者头像 李华
网站建设 2026/10/11 1:17:07

ubuntu打开Samba服务

打开Samba服务安装Samba sudo apt-get install samba查看Samba是否安装成功, 输入samba: $ samba [2021/02/23 16:30:17.065666, 0] ../lib/util/debug.c:947(reopen_logs_internal) Unable to open new log file /var/log/samba/log.%m: Permission denied [2021/02/23 16:30…

作者头像 李华
网站建设 2026/10/11 1:17:06

STM32CubeMx + makefile --- 添加串口打印 printf

STM32CubeMx makefile — 添加串口打印printf 源码仓库: 码云仓库 环境 工具版本说明开发板小熊派IoT开发板建议相同ubuntu16.04版本关系不大STM32CubeMXV6.3.0建议相同L4软件包STM32Cube FW_L4 V1.16.0建议相同STM32CubeProgrammerv2.8.0版本关系不大交叉编译工具链gcc-arm-…

作者头像 李华
网站建设 2026/10/11 1:16:50

STM32CubeMx开发之路—11使用FSMC操作LCD

STM32CubeMx开发之路—11使用FSMC操作LCD 运行环境 Windows10STM32CubeMX Version 5.2.0Keil5(MDK5) Version 5.28.0.0 简介 本例程主要讲解如何使用FSMC操作LCD STM32CubeMx基本配置 基础配置过程请参考 STM32CubeMx(Keil5)开发之路—配置第一个项目 CubeMX配置 调试打印配…

作者头像 李华
网站建设 2026/10/11 1:16:49

STM32CubeMx开发之路—移植easyflash

STM32CubeMx开发之路—移植easyflash 运行环境 Windows10STM32CubeMX Version 5.4.0Keil5(MDK5) Version 5.28.0.0硬件开发板 F103RB-NUCLEO 简介 本例程主要讲解如何移植easyflash. STM32CubeMx基本配置 基础配置过程请参考 STM32CubeMx开发之路—配置第一个项目 使用print…

作者头像 李华