pve中新建lxc和kvm的操作细节(面板+命令行+cloud init)

在 Proxmox VE (PVE) 中,创建 LXC(容器)和 KVM(虚拟机)是核心操作。虽然两者都在同一个 Web 界面完成,但其资源管理方式和镜像获取流程有所不同。


一、 准备镜像与模板

在创建之前,你需要先获取操作系统镜像。

1. 下载 LXC 模板 (Container Templates)

LXC 使用预先打包好的根文件系统模板,通常非常小(几百 MB)。

  • 在左侧树状菜单选择存储节点(默认通常是 local)。
  • 点击 “CT Templates” (CT 模板) 选项卡。
  • 点击 “Templates” 按钮。
  • 在弹出的列表中选择所需的发行版(如 Ubuntu 24.04, Debian 12, Alpine 等),点击 “Download”

2. 下载 KVM ISO 镜像

KVM 需要完整的操作系统安装镜像(ISO)。

  • 同样选择 local 存储节点。
  • 点击 “ISO Images” 选项卡。
  • 上传: 点击 “Upload” 从本地电脑上传 ISO。
  • 直接下载: 点击 “Download from URL”,粘贴镜像下载链接(如 Debian 官网链接),PVE 会直接将其下载到服务器中。

二、 创建 LXC 容器的标准步骤

LXC 适合运行轻量级服务(如 Docker 宿主机、Web 服务器、数据库等),它与宿主机共享内核。

  1. 启动向导: 点击右上角的 “Create CT”
  2. General (常规): 设置 CT ID(通常 100 起步)和 Hostname(主机名)。设置连接容器的密码或注入 SSH 公钥。
  3. Template (模板): 在 Storage 处选择存储模板的位置,在 Template 处选择刚才下载好的模板。
  4. Disks (磁盘): 设置容器磁盘大小。建议选择 scsi 类型的存储后端(如 local-lvm)。
  5. CPU: 分配核心数。
  6. Memory (内存): 分配内存和 Swap。
  7. Network (网络): * Bridge 通常选 vmbr0
  • IPv4 建议选 Static 并输入 IP/掩码(例如 192.168.1.50/24)以及网关。
  1. DNS: 默认继承宿主机设置即可。
  2. Confirm (确认): 勾选 “Start after created”(创建后启动),点击 Finish。

三、 创建 KVM 虚拟机的标准步骤

KVM 是完全虚拟化,适合运行 Windows、需要特定内核的 Linux 或高度隔离的环境。

  1. 启动向导: 点击右上角的 “Create VM”
  2. General (常规): 设置 VM IDName
  3. OS (操作系统): 选择 “Use CD/DVD disc image file (ISO)”,在 Storage 中找到刚才下载的 ISO 镜像。
  4. System (系统): * Graphic card: 默认即可。
  • Machine: 建议选 q35(较新)。
  • BIOS: 如果是 Windows 11 或现代 Linux,选 OVMF (UEFI);一般用途选 Default (SeaBIOS)
  1. Disks (磁盘): * Bus/Device: 推荐选 VirtIO Block 以获得最佳性能。
  • Cache: 推荐选 Write back (unsafe)Write back 以提升安装速度。
  1. CPU: 设置 Sockets 和 Cores。Type 建议选 host,这能让虚拟机获得与宿主机一致的指令集优化。
  2. Memory (内存): 分配内存。勾选 “Ballooning Device” 可以动态调整内存占用。
  3. Network (网络): Model 务必选 VirtIO (paravirtualized),性能最强。
  4. Confirm (确认): 完成后启动,并在控制台 (Console) 像物理机一样进行系统安装。

:light_bulb: 关键操作建议

  • VirtIO 驱动: 对于 Windows 虚拟机,由于默认不带 VirtIO 驱动,你需要额外挂载一个 virtio-win.iso 驱动镜像才能识别磁盘和网卡。
  • 特权容器 vs 无特权容器: 在创建 LXC 时,默认是 “Unprivileged container”(无特权),安全性更高。如果你需要挂载 NFS/CIFS 共享,通常需要勾选 “Privileged” 或在 Options 里开启相关的 Features
  • QEMU Guest Agent: KVM 安装好系统后,务必在 PVE 选项里开启 QEMU Guest Agent 并在虚拟机系统内安装相应的服务(如 apt install qemu-guest-agent),这样 PVE 才能正确获取虚拟机的 IP 和状态。

在 Proxmox VE 中使用命令行(CLI)管理资源不仅效率高,而且非常适合自动化脚本。LXC 使用 pct 工具,而 KVM 虚拟机则使用 qm 工具。


一、 LXC 容器命令行操作 (pct)

1. 下载模板

使用 pveam (Proxmox VE Appliance Manager) 管理模板。

# 更新模板列表
pveam update

# 列出所有可用的 Ubuntu 模板
pveam available --section system | grep ubuntu

# 下载模板到 'local' 存储
pveam download local ubuntu-24.04-standard_24.04-1_amd64.tar.zst

2. 创建并启动容器

# 创建 ID 为 100 的容器
# --net0: 配置网卡,桥接到 vmbr0,使用 DHCP
# --storage: 指定磁盘存储位置
# --password: 设置 root 密码
pct create 100 local:vztmpl/ubuntu-24.04-standard_24.04-1_amd64.tar.zst \
  --hostname my-container \
  --net0 name=eth0,bridge=vmbr0,ip=dhcp \
  --storage local-lvm \
  --password YourSecurePassword \
  --rootfs 8

# 启动容器
pct start 100

# 进入容器终端
pct enter 100


二、 KVM 虚拟机命令行操作 (qm)

1. 下载 ISO 镜像

ISO 镜像通常存放在 /var/lib/vz/template/iso

cd /var/lib/vz/template/iso
wget https://releases.ubuntu.com/24.04/ubuntu-24.04-live-server-amd64.iso

2. 创建虚拟机

创建 KVM 比较复杂,因为需要分步挂载硬件。

# 1. 创建基础配置 (ID 200, 2GB 内存, 2核)
qm create 200 --name my-vm --memory 2048 --cores 2 --net0 virtio,bridge=vmbr0

# 2. 设置系统类型和引导
qm set 200 --scsihw virtio-scsi-pci --ostype l26

# 3. 添加磁盘 (在 local-lvm 上创建 32G 磁盘)
qm set 200 --scsi0 local-lvm:32

# 4. 挂载 ISO 镜像到 CD-ROM
qm set 200 --ide2 local:iso/ubuntu-24.04-live-server-amd64.iso,media=cdrom

# 5. 设置引导顺序 (先从磁盘启动,备选 CD-ROM)
qm set 200 --boot order=scsi0;ide2

# 6. 启用 QEMU Guest Agent (推荐)
qm set 200 --agent 1

# 启动虚拟机
qm start 200


三、 常用管理命令速查表

操作 LXC (pct) KVM (qm)
启动 pct start <ID> qm start <ID>
停止 pct stop <ID> qm stop <ID>
重启 pct reboot <ID> qm reboot <ID>
销毁 pct destroy <ID> qm destroy <ID>
查看状态 pct list qm list
查看配置 pct config <ID> qm config <ID>

:light_bulb: 进阶建议:使用 Cloud-Init (针对 KVM)

如果你想在命令行创建虚拟机时实现完全无人值守安装(跳过手动装系统的过程),你需要使用 Cloud-Init。你可以下载官方的 Cloud 镜像(.qcow2 格式),然后使用 qm importdisk 导入。


使用 Cloud-Init 镜像是实现 KVM 虚拟机自动化部署的“杀手锏”。与传统的 ISO 安装不同,Cloud-Init 镜像是一个已经安装好系统的磁盘文件(通常是 .qcow2 格式)。你只需要导入它并配置好用户名、密码或 SSH 密钥,几秒钟内就能启动一个全新的系统。

以下是制作一个 Ubuntu 24.04 Cloud-Init 模板并快速克隆的操作流程。


1. 下载官方 Cloud 镜像

首先,进入 PVE 宿主机,下载官方提供的 Cloud 镜像。

Bash

# 进入 ISO 存放目录(或其他临时目录)
cd /var/lib/vz/template/iso

# 下载 Ubuntu 24.04 LTS 的 Cloud 镜像
wget https://cloud-images.ubuntu.com/noble/current/noble-server-cloudimg-amd64.img

2. 创建模板虚拟机 (以 ID 9000 为例)

这步只需要做一次,以后所有的虚拟机都从这个模板“变”出来。

Bash

# 1. 创建基础 VM (不挂载 ISO,直接指定配置)
qm create 9000 --name "ubuntu-2404-template" --memory 2048 --cores 2 --net0 virtio,bridge=vmbr0

# 2. 导入下载好的磁盘镜像到存储中 (假设存储名为 local-lvm)
# 这步会将 .img 转换为 PVE 识别的磁盘格式
qm importdisk 9000 noble-server-cloudimg-amd64.img local-lvm

# 3. 挂载导入的磁盘到 SCSI 控制器
qm set 9000 --scsihw virtio-scsi-pci --scsi0 local-lvm:vm-9000-disk-0

# 4. 添加 Cloud-Init 配置驱动盘
qm set 9000 --ide2 local-lvm:cloudinit

# 5. 设置引导磁盘为 scsi0,并开启 QEMU Agent
qm set 9000 --boot c --bootdisk scsi0 --agent 1

# 6. 配置串口终端 (Cloud 镜像通常需要开启 serial0 才能在 Console 看到输出)
qm set 9000 --serial0 socket --vga serial0

3. 设置预定义的 Cloud-Init 参数

在转为模板前,你可以预设默认的登录凭据。

Bash

# 设置默认用户名
qm set 9000 --ciuser yourname

# 设置默认密码 (或者使用 --sshkeys 注入公钥,更安全)
qm set 9000 --cipassword "YourSecurePassword"

# 设置默认 DNS 或 IP 模式 (设为 DHCP)
qm set 9000 --ipconfig0 ip=dhcp

4. 固化为模板

Bash

# 将 VM 转化为模板(转化后该 VM 无法启动,仅供克隆)
qm template 9000

:rocket: “一键秒建”:克隆新机器

一旦有了上面的 ID 9000 模板,以后想要一台新机器只需要一行命令:

Bash

# 克隆模板到 ID 101,名字叫 web-server
qm clone 9000 101 --name web-server

# 启动它
qm start 101

不到 10 秒钟,一台预装好系统、配置好 IP 和密码的 Ubuntu 虚拟机就运行起来了。

:light_bulb: 小贴士

  • 扩容: 如果模板磁盘只有 2G,你可以用 qm resize 101 scsi0 +20G 快速给新克隆的机器增加空间,Cloud-Init 会在首次启动时自动扩展文件系统。
  • SSH 密钥: 强烈建议使用 qm set 9000 --sshkeys /path/to/id_rsa.pub。这样新创建的机器你直接可以通过 SSH 免密登录,无需在 Console 里输入密码。

教程复制的不想改了 留个自用的备忘

pct create 100 local:vztmpl/debian-13-standard_13.1-2_amd64.tar.zst \
  --hostname lxc100 \
  --net0 name=eth0,bridge=vmbr0,ip=10.0.0.100/24,gw=10.0.0.1,ip6=2602:ffff:ffff:17c::100/128,gw6=2602:ffff:ffff:17c::f \
  --storage local \
  --rootfs 3 \
  --ssh /root/.ssh/bits.pub