随机
Enter 搜索 ↑↓ 切换 Esc 清空

pve-pct

命令

PVE 容器 PCT 管理命令大全

pve-pct

PVE 容器 PCT 管理命令大全

补充说明

Proxmox VE 使用 pct 作为 LXC 容器专属管理命令。LXC 容器占用资源极低、启动迅速,常用于运行路由、DNS、网页服务与各类轻量应用,适配 PVE 7.x / 8.x。

一、基础信息查看

# 查看全部容器列表
pct list

# 查看单个容器运行状态
pct status 200

# 查看容器完整配置
pct config 200

# 查看容器资源使用概况
pvesh get /cluster/resources --type lxc

二、生命周期启停管理

# 启动容器
pct start 200

# 停止容器
pct stop 200

# 重启容器
pct reboot 200

# 进入容器控制台(类似 SSH)
pct enter 200

# 在容器内执行命令
pct exec 200 -- ip addr

# 在容器内查看内存占用
pct exec 200 -- free -h

# 在容器内安装软件
pct exec 200 -- apt update && apt install -y nginx

强制应急操作

# 强制停止容器
pct stop 200 --force

# 彻底删除容器并清理配置
pct destroy 200 --purge

# 挂起容器(冻结进程)
pct freeze 200

# 恢复挂起容器
pct unfreeze 200

三、资源与挂载配置

pct set 修改参数即时生效,无需重启服务。

# 设置运行内存(MB)
pct set 200 -memory 512

# 设置 Swap 大小(MB,0 为禁用)
pct set 200 -swap 256

# 设置 CPU 核心数
pct set 200 -cores 1

# 设置 CPU 配额限制
pct set 200 -cpulimit 50

# 修改根目录磁盘大小(扩展)
pct resize 200 rootfs +2G

# 修改根目录磁盘大小(缩小)
pct resize 200 rootfs -1G

# 添加宿主机目录挂载
pct set 200 -mp0 /宿主机路径,mp=/容器内路径

# 挂载时为目录设置权限
pct set 200 -mp0 /share,mp=/mnt/share,acl=1

# 移除挂载点
pct set 200 -delete mp0

# 开启开机自启
pct set 200 -onboot 1

# 设置容器主机名
pct set 200 -hostname my-container

# 设置 DNS
pct set 200 -nameserver 8.8.8.8

# 设置网络(静态 IP)
pct set 200 -net0 name=eth0,bridge=vmbr0,ip=192.168.1.200/24,gw=192.168.1.1

# 设置网络(DHCP)
pct set 200 -net0 name=eth0,bridge=vmbr0,ip=dhcp

四、模板创建与容器克隆

# 查看可用模板列表
pveam list local

# 更新模板源
pveam update

# 下载模板
pveam download local ubuntu-22.04-standard_22.04-1_amd64.tar.gz

# 通过模板新建容器
pct create 200 /var/lib/vz/template/cache/ubuntu-22.04-standard_22.04-1_amd64.tar.gz \
  --hostname my-ct --storage local-lvm --memory 512 --cores 1 \
  --net0 name=eth0,bridge=vmbr0,ip=dhcp

# 克隆现有容器
pct clone 200 201 --hostname lxc-new

# 将容器转换为模板
pct template 200

五、快照与备份操作

# 创建容器快照
pct snapshot 200 snap01

# 创建快照并包含挂起状态
pct snapshot 200 snap01 --force 1

# 快照回滚
pct rollback 200 snap01

# 删除快照
pct delsnapshot 200 snap01

# 查看所有快照
pct listsnapshot 200

# 整机备份容器
vzdump 200 --storage local --compress zstd

# 查看备份任务
pvesh get /cluster/backup

六、高级权限配置

编辑容器配置文件 /etc/pve/lxc/200.conf

# 解除 AppArmor 限制(内网环境推荐)
lxc.apparmor.profile: unconfined

# 允许所有设备访问(用于挂载磁盘)
lxc.cgroup.devices.allow: a

# 移除所有能力降权(不推荐生产环境)
lxc.cap.drop:

# 开启嵌套虚拟化(容器内运行 Docker 必备)
features: nesting=1

# 挂载 FUSE 文件系统
lxc.mount.auto: sys:mixed

# 允许挂载 NFS
lxc.mount.entry: /mnt/nfs mnt/nfs none bind,create=dir

# 开启 TUN/TAP(VPN 类容器需要)
lxc.cgroup2.devices.allow: c 10:200 rwm

七、批量运维常用脚本

# 批量启动所有已停止的容器
for ct in $(pct list | awk '/stopped/ {print $1}'); do pct start $ct; done

# 批量停止所有运行中的容器
for ct in $(pct list | awk '/running/ {print $1}'); do pct stop $ct; done

# 批量重启所有运行中的容器
pct list | awk '/running/ {print $1}' | xargs -I {} pct reboot {}

# 批量设置开机自启
for ct in $(pct list | awk 'NR>1 {print $1}'); do pct set $ct -onboot 1; done

# 批量创建快照
for ct in $(pct list | awk 'NR>1 {print $1}'); do pct snapshot $ct "snap-$(date +%Y%m%d)"; done

# 批量查看 IP 地址
for ct in $(pct list | awk 'NR>1 {print $1}'); do echo "=== CT $ct ==="; pct exec $ct -- hostname -I; done

八、日志与故障排查

# 查看容器启动日志
journalctl -u pve-container@200

# 实时滚动容器日志
journalctl -f -u pve-container@200

# 查看 LXC 通用日志
journalctl -u pveproxy

# 查看容器网络调试日志
pct exec 200 -- ip addr
pct exec 200 -- ip route
pct exec 200 -- ping -c 3 8.8.8.8

# 查看宿主机 LXC 进程
ps aux | grep lxc

# 查看容器文件系统使用
pct exec 200 -- df -h

# 查看容器进程列表
pct exec 200 -- ps aux

九、常用别名优化

echo "alias ctlist='pct list'" >> ~/.bashrc
echo "alias ctstart='pct start'" >> ~/.bashrc
echo "alias ctstop='pct stop'" >> ~/.bashrc
echo "alias ctreboot='pct reboot'" >> ~/.bashrc
echo "alias ctstatus='pct status'" >> ~/.bashrc
echo "alias ctconfig='pct config'" >> ~/.bashrc
echo "alias ctenter='pct enter'" >> ~/.bashrc
echo "alias ctexec='pct exec'" >> ~/.bashrc
source ~/.bashrc

注意事项

适用版本:Proxmox VE 7.x / 8.x