在 Proxmox VE 9.1 中,引入了对 OCI(Open Container Initiative)镜像 的原生支持,这是与传统 LXC 模板 + 手动安装 Docker 完全不同的容器部署方式。下面从多个维度详细对比 PVE 9.1 的 OCI 镜像功能 与 传统“下载模板 + 在 LXC 中安装 Docker” 的区别:
🔍 一、核心概念对比
| 项目 | PVE 9.1 OCI 镜像支持 | 传统方式(LXC 模板 + 安装 Docker) |
|---|---|---|
| 基础技术 | 直接使用符合 OCI 标准的容器镜像(如 Docker Hub 上的 nginx, redis 等) |
先创建完整 OS LXC 容器,再在其内部安装 Docker 引擎 |
| 运行层级 | LXC 容器直接运行应用(无 Docker daemon) | LXC 容器内运行 Docker daemon → 再运行 Docker 容器(嵌套) |
| 是否需要 Docker 引擎 | ❌ 不需要 | ✅ 需要安装 dockerd |
| 镜像来源 | Docker Hub、私有 Registry 等任何 OCI 兼容仓库 | Proxmox 官方或社区提供的 LXC OS 模板 |
⚖️ 二、优缺点总结
| 维度 | OCI 镜像方式 | 传统 LXC + Docker 方式 |
|---|---|---|
| 资源占用 | 极低(仅应用进程) | 高(完整 OS + Docker daemon) |
| 启动速度 | 秒级 | 数秒到十几秒 |
| 管理复杂度 | 低(PVE 直接管理) | 高(需维护容器内 Docker) |
| 调试便利性 | 较低(无 shell,需 pct enter) |
高(可 SSH、装工具) |
| 适用场景 | 单一应用服务(Web、DB、MQ 等) | 需要多容器编排、自定义环境、开发测试 |
| 是否支持 docker-compose | ❌ 不支持(无 Docker 引擎) | ✅ 支持(需手动安装) |
🧩 三、工作原理差异
✅ PVE 9.1 OCI 方式(推荐用于轻量应用)
- PVE 利用 LXC 6.0+ 的新特性,可直接将 OCI 镜像(如
docker.io/library/nginx:alpine)转换为 LXC 容器根文件系统。 - 创建的是一个 单进程、无完整 init 系统 的轻量容器(类似 Podman/Docker 容器行为)。
- 启动时直接运行镜像中的主进程(如
nginx),**没有 systemd、没有 shell(除非镜像自带)**。 - 无需在容器内安装 Docker,避免了“容器套容器”的性能和复杂性问题。
💡 本质:用 LXC 运行 Docker 镜像,但绕过 Docker 引擎。
❌ 传统方式(“套娃”模式)
- 先创建一个完整的 Linux 系统容器(如 Ubuntu LXC)。
- 在该容器内安装 Docker CE。
- 再用
docker run启动应用容器。 - 形成:PVE → LXC(OS)→ Docker daemon → 应用容器
⚠️ 问题:资源开销大、启动慢、权限/网络配置复杂、安全边界模糊。
四、使用流程对比
▶️ OCI 方式(PVE 9.1 新功能)
- 在 PVE Web UI → “CT 模板” → “从 OCI 镜像创建”
- 输入镜像名,如:
docker.io/library/nginx:alpine - 创建 LXC 容器时:
- 勾选 “无特权”
- 勾选 **“启用嵌套”**(实际此处“嵌套”指允许容器内执行 exec/fork,非 Docker 嵌套)
- 启动后直接运行 Nginx,无 SSH、无 shell(除非进入控制台用
pct enter)
▶️ 传统方式
- 下载 Alpine/Ubuntu LXC 模板
- 创建 LXC 容器(完整 OS)
- 进入容器,配置源、安装 Docker、启动 dockerd
- 再拉取并运行应用镜像(如
docker run nginx)
五、如何选择?
| 你的需求 | 推荐方案 |
|---|---|
| 快速部署一个 Nginx、Redis、Portainer 等单一服务 | ✅ OCI 镜像方式(PVE 9.1 新功能) |
| 需要运行多个关联容器(如 Web + DB + Cache) | ❌ OCI 不行 → 用 传统 LXC + docker-compose 或 KVM 虚拟机 + Docker |
| 需要 SSH、cron、systemd 等完整 OS 功能 | ❌ OCI 不行 → 用 LXC 模板 + 手动安装 Docker |
| 追求最小化、高性能、低开销 | ✅ OCI 镜像方式 |
- OCI 容器 ≠ Docker 容器:它只是用了相同的镜像格式,但由 LXC 直接运行,不依赖 Docker。
- PVE 9.1 的 OCI 支持是革命性的:让 PVE 从“虚拟化平台”向“轻量容器平台”迈出关键一步。
- 无法在 OCI 容器中运行
docker命令:因为它根本没有 Docker 引擎。
六、安装实例
我们以nginx为例吧。
- 获取镜像仓库
# 外网镜像
docker.io/library/nginx:alpine
# 国内镜像,如:
docker.1ms.run/nginx:alpine
# 也可以在docker下载上传到自己的dockerhub上
docker pull nginx:alpine
docker tag nginx:alpine your-registry.example.com/nginx:alpine
docker push your-registry.example.com/nginx:alpine
-
添加容器
进入存储 -> CT模板 -> Pull from OCI Registry

- 等待容器下载完成

- 然后创建LXC容器,和正常容器创建一样,只是模板选择的时候选择前面下载的nginx

- 其他流程和LXC模板一样,这里我们假设容器ID为 108,IP地址为 192.168.1.108

- 等待安装完成

- 在浏览器中输入
https://192.168.1.108就可以访问Nginx了

- 进入容器配置
在主机Shell中 输入 pct enter <容器ID> 进入容器,相当于 docker exec -it nginx /bin/bash,就可以进入容器内对Nginx进行配置了。
pct enter 108

评论区