一键创建虚拟机方案汇总

一键创建虚拟机方案汇总

目标区分:两种一键层级

  1. 仅创建虚拟机硬件(CPU/内存/磁盘,挂载ISO):脚本完成硬件创建,操作系统仍需手动安装
  2. 创建虚拟机+自动部署系统、账号、网络:依赖预制镜像/无人应答/cloud-init

Windows平台方案

  • Hyper-V + PowerShell脚本

    • 适用:Win10/11专业版/企业版,开启Hyper-V
    • 脚本功能:新建VM、创建VHDX、分配资源、挂载ISO、启动
    • 示例脚本:
1
2
3
4
5
6
7
$vmName="test-vm"
$isoPath="D:\iso\ubuntu.iso"
$vhdPath="D:\HyperV\$vmName.vhdx"

New-VM -Name $vmName -MemoryStartupBytes 2GB -Generation 2 -NewVHDPath $vhdPath -NewVHDSizeBytes 40GB -SwitchName "Default Switch"
Set-VMDvdDrive -VMName $vmName -Path $isoPath
Start-VM $vmName

备注:家庭版Windows无Hyper-V;自动安装需搭配unattend.xml无人应答文件

  • VMware Workstation + vmrun / PowerCLI

    • 原理:预先制作干净关机模板虚拟机,使用vmrun克隆
    • 示例命令:vmrun clone "D:\template\template.vmx" "D:≠wvm\myvm.vmx" full myvm
    • 备注:家用稳定;配合无人值守可一次性创建虚拟机并装好系统
  • VirtualBox + VBoxManage(开源跨平台)

    • 全部CLI命令,可封装bat/sh一键脚本
    • 示例命令:
1
2
3
4
5
6
VBoxManage createvm --name "ubuntu-vm" --ostype Ubuntu_64 --register
VBoxManage modifyvm "ubuntu-vm" --memory 2048 --cpus 2
VBoxManage createhd --filename ubuntu.vdi --size 40960
VBoxManage storageattach "ubuntu-vm" --storagectl "SATA" --port 0 --device 0 --type hdd --medium ubuntu.vdi
VBoxManage storageattach "ubuntu-vm" --storagectl "SATA" --port 1 --device 0 --type dvddrive --medium ubuntu.iso
VBoxManage startvm "ubuntu-vm"

Linux平台方案

  • KVM + libvirt + virt-install(服务器推荐)

    • virt-install单条命令创建并启动虚拟机,搭配cloud-image+cloud-init可自动配置主机名、ssh密钥、用户,无需手动装系统
    • 示例命令:
1
2
3
4
5
6
7
8
9
virt-install \
--name testvm \
--ram 2048 \
--vcpus 2 \
--disk path=/var/lib/libvirt/images/testvm.qcow2,size=40 \
--cdrom /iso/ubuntu.iso \
--network bridge=br0 \
--graphics vnc \
--noautoconsole
  • Docker(注意:容器≠虚拟机)

    • 仅适合不需要独立内核的隔离环境,docker run一行拉起;不支持独立BIOS、完整操作系统。

跨平台自动化编排方案

  • Packer(HashiCorp)

    • 制作虚拟机模板工具:自动下载ISO、无人值守安装系统,输出VMware/VirtualBox/KVM模板。
    • 流水线:Packer build构建镜像模板 -> terraform apply一键批量创建虚拟机。适合批量、CI/CD标准化环境。
  • Vagrant(个人开发首选)

    • 基于Vagrantfile,执行vagrant up一键创建。底层支持VirtualBox/VMware/KVM,自动拉取预制镜像、配置网络、共享文件夹。
    • 示例Vagrantfile:
1
2
3
4
5
6
7
Vagrant.configure("2") do |config|
  config.vm.box = "ubuntu/jammy64"
  config.vm.provider "virtualbox" do |vb|
    vb.memory = "2048"
    vb.cpus = 2
  end
end

常用命令:vagrant up 创建启动;vagrant destroy 销毁。

云端虚拟机 阿里云/腾讯云/AWS,使用SDK/terraform调用API一键创建ECS云主机。

选型建议

  • 个人快速开发测试,Windows/Linux通用:Vagrant
  • Windows本地,习惯VMware:vmrun + 模板克隆
  • Linux服务器KVM虚拟化:virt-install + cloud-init
  • 批量标准化镜像、CI流水线:Packer + Terraform
  • Windows家庭版无Hyper-V:VirtualBox + VBoxManage脚本