C4 模型:Container 图
简介 / Introduction
C4 模型是一种用层次化视图描述软件架构的方法,从 Context → Container → Component → Code 逐层深入。Container 图聚焦于系统边界内部的关键应用进程和数据存储,是架构设计文档的核心交付物。本文用 PlantUML(stdlib)和 Mermaid(C4 扩展)两种引擎分别绘制同一张 Container 图。
PlantUML 版
PlantUML 通过 !include <C4> 引入 C4 stdlib,使用 Container(...) 声明容器,ContainerDb 声明数据库,用 System_Boundary 划分系统边界:
1 | !include <C4/C4_Container> |
Mermaid 版
Mermaid 的 C4 语法需要 c4码头 图类型(c4 或 c4dynamic),使用 Container/ContainerDb/System 等节点描述:
1 | c4Context |
对比 / Side-by-side
| 特性 | PlantUML | Mermaid |
|---|---|---|
| 图类型声明 | !include <C4/C4_Container> + 图类型 |
c4Context |
| 容器节点 | Container(id, name, tech, desc) |
Container(id, name, tech, desc) |
| 数据库节点 | ContainerDb(id, name, tech, desc) |
ContainerDb(id, name, tech, desc) |
| 系统边界 | System_Boundary(name) { ... } |
System_Boundary(name) |
| 外部系统 | System(name, desc) |
System(name, desc) |
| 关系箭头 | Rel(source, target, label) |
Rel(source, target, label) |
| stdlib 需安装 | 是(plantuml-stdlib) |
否(Mermaid 内置 C4) |
小结 / Wrap-up
PlantUML 的 C4 stdlib 语义完整、功能丰富,适合需要严格遵守 C4 规范的正式架构文档,但需要后端安装 stdlib 文件。Mermaid 内置 C4 语法,无需额外依赖,适合快速原型和内网文档。两者均可导出 SVG,嵌入 Confluence、Notion 等协作工具时建议配合 xmlns:xlink 注入以保证图片正常显示。
- 标题: C4 模型:Container 图
- 作者: puml.online
- 创建于 : 2026-09-27 09:00:00
- 更新于 : 2026-09-29 01:06:38
- 链接: https://puml.online/blog/c4-diagram-container/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。