学习目标
- 能用
unshare 手动创建各种 Namespace 并理解其隔离效果
- 能手动通过 Cgroups 文件系统限制进程的 CPU 和内存
- 能手动挂载 OverlayFS 并理解写时复制机制
- 能用 veth pair + bridge 手动搭建容器间网络通信
- 能编写生产级 Dockerfile,运用多阶段构建、缓存优化、安全最佳实践
- 能用 Docker Compose 编排包含多个服务的完整应用栈
- 能画出 Docker/K8s 容器运行时调用链,解释各组件角色
核心认知
容器不是虚拟机。容器本质上就是一个受限的 Linux 进程——通过 Namespace 隔离视图,通过 Cgroups 限制资源,通过 OverlayFS 提供文件系统。理解这一点是理解整个云原生生态的根基。
已完成
进行中
待开始
内容总览
1.2 Docker 容器
已完成
08 — 镜像仓库
Docker Hub / Harbor 企业级部署、RBAC / 漏洞扫描 / 镜像复制
已完成
09 — 容器运行时
高级(containerd/CRI-O) vs 低级(runc)运行时、OCI 标准、K8s CRI
实践建议
- 用 Golang 写一个简单的 HTTP 服务,打包为 Docker 镜像并运行
- 用 Docker Compose 编排一个包含 API + DB + Redis 的完整应用
- 尝试用
unshare 命令手动创建 Namespace,理解容器本质
- 手动挂载 OverlayFS,创建/修改/删除文件,观察各层变化
- 用 veth pair + bridge 手动搭建两个 Network Namespace 间的通信
完成标准
- 能解释容器的本质:Namespace(隔离)+ Cgroups(限制)+ rootfs(文件系统)
- 能手动用 unshare 创建各种 Namespace 并验证隔离效果
- 能手动通过 Cgroups 文件系统限制进程的 CPU 和内存
- 能手动挂载 OverlayFS 并解释写时复制的工作流程
- 能用 veth pair + bridge 搭建容器间网络通信
- 能清晰解释镜像、容器、仓库三者关系与各自作用
- 能编写生产级 Dockerfile(多阶段构建、缓存优化、非 root 用户)
- 能用 Docker Compose 编排完整应用栈(含健康检查、资源限制、环境分离)
- 能画出 Docker/K8s 容器运行时调用链,解释 containerd/runc/CRI-O 角色
推荐阅读顺序
严格按编号顺序阅读——第一篇建立 Linux 前置认知,接下来三篇是"容器是什么"的底层原理,后五篇是"怎么用容器"的工程实践:
- 01:Linux 基础速览,建立进程 / 文件系统 / 网络的前置概念
- 02 → 03 → 04:Namespace(隔离)→ Cgroups(限制)→ OverlayFS(文件系统),理解"容器 = 进程 + 隔离 + 限制 + 分层文件系统"
- 05:Docker 架构总览,将底层原理与上层工具串联
- 06 → 07 → 08:从写 Dockerfile → 编排多容器 → 管理镜像仓库,递进的工程实践
- 09:运行时层面的全景,为进入阶段二(Kubernetes)做铺垫
推荐资源