文章 11
为什么生产环境使用容器,以及如何安全运行
理解镜像、容器、仓库与编排,并了解一致性、隔离、扩展和部署如何支持生产以及安全边界。
容器解决的问题
从系统使用者开始
“在我的机器上能运行”通常来自环境不一致
软件依赖运行时、系统库、包、配置和启动命令。开发、测试与生产差异会造成不一致。容器镜像把应用与依赖打包成可重复制品,但网络、密钥、存储、资源限制和更新仍需设计。
阅读前术语
按实际作用解释技术语言
无需一次记住所有术语,可在阅读详情时返回对照。
- Image
- 包含应用、运行时、依赖与启动元数据的只读包。
- Container
- 从镜像启动并受文件系统、网络与资源边界约束的进程。
- Registry
- 带版本与访问控制的镜像仓库,例如 Amazon ECR。
- Orchestrator
- 调度、替换和扩展容器的平台,例如 ECS 或 Kubernetes。
- Immutable
- 不原地修改发布,而用新版本镜像替换。
- Volume
- 生命周期独立于容器的存储。
- Health Check
- 确认实例真正可服务,而不仅是进程仍存在。
- Resource Limit
- 限制单个容器 CPU/内存,避免影响其他工作负载。
面向业务与一般用户的摘要
为什么生产环境使用容器,以及如何安全运行
镜像是不可变模板,容器是运行实例。
同一制品从测试提升到生产可减少环境漂移。
容器共享主机内核,比虚拟机轻量,但不是完美安全边界。
生产需要仓库控制、扫描、非 root、资源限制、健康检查、密钥与适当编排。
动态扩展说明
深入阅读前,先了解各阶段如何连接
选择阶段,查看发生了什么、需要检查哪些证据,以及一个决策如何影响下一阶段。
步骤 01 / 05
01 / 理解运行单元
容器是被隔离的进程,并非小型虚拟机
虚拟机包含独立操作系统;容器共享主机内核,并通过命名空间和控制组隔离与限制资源,因此启动更快。但内核风险和过大权限仍然重要。
深入说明
逐项说明如何应用于真实场景
每一部分都连接业务影响与 Tech Lead 需要检查的内容,包括示例、证据与限制。
01 / 理解运行单元
01容器是被隔离的进程,并非小型虚拟机
虚拟机包含独立操作系统;容器共享主机内核,并通过命名空间和控制组隔离与限制资源,因此启动更快。但内核风险和过大权限仍然重要。
02 / 单一制品
02构建一次,测试同一镜像,再提升到生产
流水线应从已知提交构建、测试、扫描、生成 SBOM、签名并存储镜像。使用不可变摘要而非 latest 标签,并在各环境提升同一摘要。
- 使用维护良好的精简基础镜像
- 锁定依赖版本
- 保留 SBOM
- 构建时及新 CVE 出现时扫描
- 清理过期镜像
03 / 降低权限
03镜像干净还不够,运行权限与网络也必须受限
以非 root 运行,优先只读文件系统,移除不需要的 capability,禁止特权模式,限制出口并从密钥管理器注入密钥。设置 CPU/内存请求与限制,并持续修补主机和运行时。
在 CI/CD 或准入控制中以策略即代码执行,避免只依赖人工审查。
04 / 分离状态
04容器应可替换,持久数据必须独立存在
不要把持久用户数据存入容器可写层。使用托管数据库、对象存储或备份卷,限制服务间网络,只暴露必要入口,并使用稳定服务发现。
05 / 选择合适层级
05Docker Compose、ECS 与 Kubernetes 面向不同运营规模
Compose 适合本地、测试和简单单机运行;ECS/Fargate 在 AWS 上提供托管编排;Kubernetes 灵活但需要更高的知识、安全、升级和事故处理成本。选择满足需求的最简单平台。
行动前检查清单
使用维护的精简镜像
非 root 运行
固定镜像摘要
扫描 CVE 并生成 SBOM
镜像不含密钥
设置 CPU/内存限制
定义健康检查
持久数据外置
限制入口与出口
测试滚动部署与回滚
参考资料
数字与示例用于建立讨论框架,决策前应以真实系统及其限制进行验证。
- 审阅者
- SIS Platform Engineering
- 最后审阅
- 2026-07-17