文章 11

为什么生产环境使用容器,以及如何安全运行

理解镜像、容器、仓库与编排,并了解一致性、隔离、扩展和部署如何支持生产以及安全边界。

17 分钟 开发者、DevOps、管理员和 Tech Lead 2026-07-17
概览信息图
仓库image:v24
容器 01
容器 02
容器 03
容器 04

容器解决的问题

从系统使用者开始

“在我的机器上能运行”通常来自环境不一致

软件依赖运行时、系统库、包、配置和启动命令。开发、测试与生产差异会造成不一致。容器镜像把应用与依赖打包成可重复制品,但网络、密钥、存储、资源限制和更新仍需设计。

阅读前术语

按实际作用解释技术语言

无需一次记住所有术语,可在阅读详情时返回对照。

Image
包含应用、运行时、依赖与启动元数据的只读包。
Container
从镜像启动并受文件系统、网络与资源边界约束的进程。
Registry
带版本与访问控制的镜像仓库,例如 Amazon ECR。
Orchestrator
调度、替换和扩展容器的平台,例如 ECS 或 Kubernetes。
Immutable
不原地修改发布,而用新版本镜像替换。
Volume
生命周期独立于容器的存储。
Health Check
确认实例真正可服务,而不仅是进程仍存在。
Resource Limit
限制单个容器 CPU/内存,避免影响其他工作负载。

面向业务与一般用户的摘要

为什么生产环境使用容器,以及如何安全运行

01

镜像是不可变模板,容器是运行实例。

02

同一制品从测试提升到生产可减少环境漂移。

03

容器共享主机内核,比虚拟机轻量,但不是完美安全边界。

04

生产需要仓库控制、扫描、非 root、资源限制、健康检查、密钥与适当编排。

动态扩展说明

深入阅读前,先了解各阶段如何连接

选择阶段,查看发生了什么、需要检查哪些证据,以及一个决策如何影响下一阶段。

步骤 01 / 05

01 / 理解运行单元

容器是被隔离的进程,并非小型虚拟机

虚拟机包含独立操作系统;容器共享主机内核,并通过命名空间和控制组隔离与限制资源,因此启动更快。但内核风险和过大权限仍然重要。

深入说明

逐项说明如何应用于真实场景

每一部分都连接业务影响与 Tech Lead 需要检查的内容,包括示例、证据与限制。

01 / 理解运行单元

01

容器是被隔离的进程,并非小型虚拟机

虚拟机包含独立操作系统;容器共享主机内核,并通过命名空间和控制组隔离与限制资源,因此启动更快。但内核风险和过大权限仍然重要。

02 / 单一制品

02

构建一次,测试同一镜像,再提升到生产

流水线应从已知提交构建、测试、扫描、生成 SBOM、签名并存储镜像。使用不可变摘要而非 latest 标签,并在各环境提升同一摘要。

  • 使用维护良好的精简基础镜像
  • 锁定依赖版本
  • 保留 SBOM
  • 构建时及新 CVE 出现时扫描
  • 清理过期镜像

03 / 降低权限

03

镜像干净还不够,运行权限与网络也必须受限

以非 root 运行,优先只读文件系统,移除不需要的 capability,禁止特权模式,限制出口并从密钥管理器注入密钥。设置 CPU/内存请求与限制,并持续修补主机和运行时。

面向 Tech Lead 的详情

在 CI/CD 或准入控制中以策略即代码执行,避免只依赖人工审查。

04 / 分离状态

04

容器应可替换,持久数据必须独立存在

不要把持久用户数据存入容器可写层。使用托管数据库、对象存储或备份卷,限制服务间网络,只暴露必要入口,并使用稳定服务发现。

05 / 选择合适层级

05

Docker Compose、ECS 与 Kubernetes 面向不同运营规模

Compose 适合本地、测试和简单单机运行;ECS/Fargate 在 AWS 上提供托管编排;Kubernetes 灵活但需要更高的知识、安全、升级和事故处理成本。选择满足需求的最简单平台。

行动前检查清单

01

使用维护的精简镜像

02

非 root 运行

03

固定镜像摘要

04

扫描 CVE 并生成 SBOM

05

镜像不含密钥

06

设置 CPU/内存限制

07

定义健康检查

08

持久数据外置

09

限制入口与出口

10

测试滚动部署与回滚

参考资料

数字与示例用于建立讨论框架,决策前应以真实系统及其限制进行验证。

审阅者
SIS Platform Engineering
最后审阅
2026-07-17

还不确定应该从哪里开始检查?

使用初步评估工具,或向 SIS 提供系统背景,以便确定最高优先事项。

返回知识库