並不是所有業務都需要一台完整的虛擬機器。Proxmox VE 中的 LXC 容器與宿主機共享核心,一兩秒即可啟動,佔用的記憶體和磁碟也遠少於 KVM 虛擬機器,非常適合在獨立伺服器或宿主機(母雞)上執行網站、資料庫、監控、代理和內部工具。本文介紹如何下載容器模板、通過 Web 介面和 pct 命令建立容器、為容器分配公網或內網 IP、限制 CPU、記憶體、磁碟和頻寬、在容器中執行 Docker,以及備份。
| LXC 容器 | KVM 虛擬機器 | |
|---|---|---|
| 作業系統 | 僅支援 Linux | Linux、Windows、BSD |
| 資源開銷 | 極低,數秒內啟動 | 較高,需要完整啟動作業系統 |
| 隔離性 | 共享核心 | 完全隔離 |
| 核心調優與模組 | 受限 | 完全可控 |
| 典型用途 | 自用服務、大量小型網站 | 客戶 VPS、Windows、Docker 宿主機 |
模板是預先製作好的根檔案系統,提供 Debian、Ubuntu、Rocky Linux、AlmaLinux、Alpine 等系統。在 Web 介面中開啟 local → CT Templates → Templates,或者在宿主機上使用命令列。模板檔名包含版本號,請從列表中複製準確的名稱。
pveam update
pveam available --section system | grep -E 'debian-12|ubuntu-24.04|rockylinux-9|alpine'
pveam download local debian-12-standard_12.7-1_amd64.tar.zst # use the exact name from the list
pveam list local
在 Web 介面中點選 Create CT,按嚮導依次填寫:主機名和 root 密碼(或 SSH 公鑰)、模板、磁碟大小、CPU 核心數、記憶體和網路。保持勾選 Unprivileged container(非特權容器);它會把容器內的 root 對映為宿主機上的非特權使用者,安全性高得多。用命令列建立同樣的容器:
pct create 101 local:vztmpl/debian-12-standard_12.7-1_amd64.tar.zst \
--hostname web01 \
--unprivileged 1 \
--cores 2 --memory 2048 --swap 512 \
--rootfs local-lvm:20 \
--net0 name=eth0,bridge=vmbr0,ip=203.0.113.11/24,gw=203.0.113.1 \
--nameserver 1.1.1.1 \
--ssh-public-keys /root/.ssh/authorized_keys \
--features nesting=1 \
--onboot 1
pct start 101
pct enter 101 # open a root shell inside the container
pct list
公網 IP:將容器接入承載公網的網橋(通常是 vmbr0),併為其分配一個附加 IP 以及該子網的閘道器,方法與虛擬機器完全相同(參見為 Proxmox 虛擬機器分配公網 IP)。如果附加 IP 是路由到指定 MAC 地址的,請在 net0 選項中用 hwaddr= 設定該 MAC。
內網 NAT:如需讓多個容器共用宿主機的單個 IP,可以將它們接入 vmbr1 這樣的內網網橋,再轉發所需埠,具體方法參見 Proxmox VE NAT 網路配置:
pct set 102 --net0 name=eth0,bridge=vmbr1,ip=10.10.10.12/24,gw=10.10.10.1
pct reboot 102
所有限制都可以在容器執行時修改,大部分會立即生效。
# CPU: 2 visible cores, but at most 1.5 cores of total CPU time
pct set 101 --cores 2 --cpulimit 1.5
# Memory and swap (MB)
pct set 101 --memory 1024 --swap 256
# Grow the root disk by 10 GB (disks can grow online but not shrink)
pct resize 101 rootfs +10G
# Bandwidth: rate is in MB/s, so 12.5 is roughly 100 Mbps
pct set 101 --net0 name=eth0,bridge=vmbr0,ip=203.0.113.11/24,gw=203.0.113.1,rate=12.5
pct config 101
啟用巢狀(nesting)後,Docker 可以在非特權容器中執行。部分映象還需要 keyctl 特性。
pct set 101 --features nesting=1,keyctl=1
pct reboot 101
pct enter 101
# inside the container, install Docker as usual (see our Docker guide)
對於生產環境的 Docker 宿主機,尤其是執行大量容器或使用特殊儲存驅動的場景,KVM 虛擬機器仍然是更穩妥的選擇。
# Snapshot before risky changes (requires LVM-thin, ZFS or Ceph storage)
pct snapshot 101 before-upgrade
pct rollback 101 before-upgrade
# Full backup with compression (see our Proxmox backup guide for schedules)
vzdump 101 --mode snapshot --storage local --compress zstd
# Clone a container you have prepared as a base
pct clone 101 105 --hostname web05 --full 1
關於定時備份和恢復,請參見 Proxmox VE 備份與快照教程。
檢查 pct config 中的 IP、字首長度和閘道器,確認網橋正確,並檢查容器內 /etc/resolv.conf 中的 DNS 設定。在容器內先測試 ping -c3 1.1.1.1,再測試 ping -c3 google.com,以區分是路由問題還是 DNS 問題。同時確認 Proxmox 防火牆沒有攔截該容器。
不能直接轉換。需要新建一台虛擬機器,再遷移資料或應用,例如使用 rsync(參見伺服器遷移教程)。
這取決於業務負載,而不是 Proxmox 本身。由於容器開銷很小,一台 64 GB 記憶體的伺服器可以輕鬆承載幾十個小型網站或服務。請留意宿主機的記憶體、磁碟 I/O 和 CPU steal,併為高峰預留餘量。
如果按以上步驟操作後問題仍未解決,請提交工單聯絡 IMIDC 7×24 技術支援,並附上伺服器 IP、Proxmox VE 版本、容器 ID 及其配置(pct config ID)和完整報錯資訊,方便工程師快速定位。