使用京东云部署服务时,系统镜像与应用镜像有什么区别?

在京东云(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-slim
COPY app.jar /app.jar
CMD ["java", "-jar", "/app.jar"]

🔍 关键补充说明(京东云特有实践)

  • 京东云容器服务(JDCCS) 中,系统镜像对应节点(Node)操作系统(即 Worker 节点使用的 CVM 镜像),而应用镜像则是部署到该集群上的容器镜像——二者解耦:节点 OS 升级不影响应用镜像,反之亦然。
  • 弹性容器实例(ECIS) 是无服务器容器,不暴露底层 OS,但其底层仍依赖京东云托管的轻量级系统镜像(如基于 Firecracker 的微虚拟机镜像),用户只需关注应用镜像。
  • 京东云 容器镜像服务(JDCCR) 支持镜像分层缓存、跨地域复制、漏洞扫描,建议将系统镜像(base image)与应用镜像分离存储,并启用自动触发构建(当 base image 更新时重建应用镜像)。

最佳实践建议

  • 优先选用京东云官方维护的最小化系统镜像(如 alpinedistroless)以减小攻击面;
  • 应用镜像应遵循 多阶段构建(multi-stage build),避免泄露构建工具和敏感信息;
  • 在生产环境使用带哈希或语义化标签的应用镜像(禁用 latest),配合京东云镜像签名与准入控制(如 OPA 策略)保障可信部署。

如您具体使用的是某类服务(如 JDCCS、ECIS 或 Serverless),我可进一步提供对应的操作示例或配置模板。