在京东云(JD Cloud)的部署服务(如容器服务 JDCCS、云主机 CVM、弹性容器实例 ECIS 或 Serverless 容器服务)中,“系统镜像”与“应用镜像”是两个不同层级、用途和构建方式的概念,区别如下:
| 维度 | 系统镜像(System Image) | 应用镜像(Application Image) |
|---|---|---|
| 定义 | 操作系统级别的基础镜像,用于启动并初始化计算环境(如云主机或容器运行时的底层 OS)。通常为精简版 Linux(如 CentOS、Ubuntu、Alpine)或 Windows Server 的预装镜像。 | 基于系统镜像构建的、包含特定应用及其所有依赖(运行时、库、配置、代码等)的可执行镜像,符合 OCI 标准(如 Docker 镜像),用于直接运行业务服务。 |
| 使用场景 | • 云主机(CVM)创建时选择的操作系统模板 • 容器服务中作为基础层(FROM 指令的起点) • 用于提供内核、init 系统、基础工具(bash、curl、systemd 等) |
• 容器服务(JDCCS/ECIS)中部署的 Pod/实例镜像 • Serverless 容器(如 JD Cloud Serverless Container)的入口镜像 • CI/CD 流水线最终交付产物 |
| 来源 | • 京东云官方提供(如 ubuntu20.04, centos7.9, alpine3.18)• 用户自定义镜像(基于官方镜像安装驱动/安全补丁后导出) • 共享镜像或市场镜像(含预装软件栈) |
• 用户自行构建(Dockerfile + docker build)• 从 Docker Hub / 京东云容器镜像服务(JDCCR)拉取(如 nginx:1.25, myapp:v2.1)• 由京东云 CI/CD 工具链自动构建生成 |
| 内容组成 | ✅ 内核与 init 进程 ✅ 基础命令行工具(ls, ps, ssh 等) ❌ 不含业务代码、应用逻辑、中间件(除非是预装型市场镜像) |
✅ 系统镜像(作为 base layer) ✅ 运行时(JDK/Python/Node.js) ✅ 应用二进制/源码/打包包(jar/war/pyz) ✅ 配置文件、启动脚本(entrypoint/cmd) ✅ 依赖库(通过 apt/yum/pip/npm 安装) |
| 更新与维护 | • 由京东云统一维护安全补丁和内核升级 • 用户需手动更换镜像版本以获取更新(如 CVM 重装系统) • 自定义系统镜像需用户自行维护 |
• 由应用团队负责:修复漏洞、升级依赖、发布新功能 • 推荐采用语义化版本(如 myapp:v1.2.0)+ 镜像扫描(JDCCR 支持 CVE 扫描)• 支持灰度发布、镜像签名(Notary)、不可变部署 |
| 典型示例(京东云平台) | • CVM 镜像列表中的:Ubuntu Server 22.04 LTS (64-bit)CentOS 7.9 64-bit (Secure Enhanced)• JDCCR 中的基础镜像仓库: jdccr.cn/public/ubuntu:22.04 |
• 用户推送至 JDCCR 的镜像:my-registry.cn-north-1.jdcloud.com/myapp/backend:prod-v3.5• 使用 Dockerfile 构建: FROM jdccr.cn/public/openjdk:17-jre-slimCOPY app.jar /app.jarCMD ["java", "-jar", "/app.jar"] |
🔍 关键补充说明(京东云特有实践):
- 在 京东云容器服务(JDCCS) 中,系统镜像对应节点(Node)操作系统(即 Worker 节点使用的 CVM 镜像),而应用镜像则是部署到该集群上的容器镜像——二者解耦:节点 OS 升级不影响应用镜像,反之亦然。
- 弹性容器实例(ECIS) 是无服务器容器,不暴露底层 OS,但其底层仍依赖京东云托管的轻量级系统镜像(如基于 Firecracker 的微虚拟机镜像),用户只需关注应用镜像。
- 京东云 容器镜像服务(JDCCR) 支持镜像分层缓存、跨地域复制、漏洞扫描,建议将系统镜像(base image)与应用镜像分离存储,并启用自动触发构建(当 base image 更新时重建应用镜像)。
✅ 最佳实践建议:
- 优先选用京东云官方维护的最小化系统镜像(如
alpine或distroless)以减小攻击面; - 应用镜像应遵循 多阶段构建(multi-stage build),避免泄露构建工具和敏感信息;
- 在生产环境使用带哈希或语义化标签的应用镜像(禁用
latest),配合京东云镜像签名与准入控制(如 OPA 策略)保障可信部署。
如您具体使用的是某类服务(如 JDCCS、ECIS 或 Serverless),我可进一步提供对应的操作示例或配置模板。
CLOUD技术笔记