Docker 是现代 DevOps 和云原生应用的基石。本专题按「概念认知 → 运行时原理 → 构建优化 → 编排部署 → 生产安全」的路径,提供从开发环境到生产上线的完整容器化指南。
一、Docker 核心概念
建立对容器化的系统性认知:
- Docker 详解:容器化技术的核心概念与实战入门 — 镜像/容器/Dockerfile/Volume/网络/安装
- Docker vs Kubernetes 对比与选型 — 容器运行时 vs 容器编排、决策树
- Windows 容器与 Linux 容器:隔离模型与混合部署 — 进程/Hyper-V 隔离、Nano Server/Server Core 选型、LCOW 与 WSL2、混合部署
- 本地开发运行时:OrbStack 与 Colima — Docker Desktop/Colima/OrbStack 架构对比、Colima profile 与 VM 参数、OrbStack 文件共享与内置 K8s、docker context 切换与团队统一
二、容器运行时深度解析
理解 Docker 的底层调用链与 OCI 规范:
- 容器运行时深度解析:从 dockerd 到 containerd 再到 runc — OCI 运行时规范、containerd 架构、cri-plugin 与 K8s 集成、shim-v2
- OCI 镜像与工件规范:manifest、index 与 artifact 生态 — manifest/index/config 结构、artifactType 与 referrers API、Helm/SBOM/签名作为工件推送
- containerd 插件机制与扩展 — 插件架构与类型、shim v2 自定义运行时、自定义 snapshotter、CNI 集成与 ctr 调试
- 边缘容器与轻量运行时:Wasm、gVisor 与 K3s — 资源受限场景、Wasm/runwasi 轻量运行时、gVisor 隔离、边缘 K3s、低功耗 ARM 与 OTA 更新
- Podman 与 Docker 迁移对比 — daemon 与 daemonless 进程模型差异、podman-docker 兼容层、rootless 默认行为、Quadlet/systemd 集成、registry 互通与可回退迁移路径
三、构建与优化
掌握生产级 Dockerfile 编写与镜像优化:
- Dockerfile 最佳实践 — 多阶段构建、镜像瘦身、.dockerignore、安全加固
- Docker 多阶段构建与 BuildKit 优化完全指南 — Go/Rust/Node/Python 最小化 Dockerfile 模板、缓存挂载、远程缓存、distroless/chainguard
- 镜像大小优化与层缓存策略 — layer 缓存原理、BuildKit mount cache、多阶段构建高级模式、Trivy/Snyk 扫描
- 多平台镜像构建与 Docker Buildx — Amd64/Arm64 跨架构交付、QEMU 模拟、manifest list、CI 多平台构建
- 容器内进程管理与 Entrypoint 最佳实践 — PID 1 与僵尸进程、tini/dumb-init 对比、ENTRYPOINT vs CMD、多进程容器(supervisor/s6)、各语言入口封装
- 构建缓存进阶:Buildx 远程缓存与 CI 加速 — BuildKit 缓存模型与 cache key、cache 挂载、registry/local/gha 后端、CI 多 job 复用、缓存失效排查
- 镜像签名与供应链验证:Cosign/Sigstore 与准入控制 — Sigstore keyless 机制、OCI 签名格式、Cosign 签名与验证、Kyverno/Connaisseur 准入、SBOM/SLSA 联动
- Buildx Bake 与多目标构建编排 — HCL/JSON/Compose 文件格式与解析优先级、targets/groups/inherits/matrix 语法、变量与上下文注入、多平台与缓存导出、CI 按需构建与调试
四、编排与部署
多容器编排与框架部署实战:
- Docker Compose 多容器编排指南 — 服务定义、网络、开发/生产多环境配置
- Docker Compose 生产环境实践 — profiles/extends、健康检查、日志驱动、secrets/configs、Swarm 部署
- Docker 部署 React 与 Next.js — SPA 静态托管、Next.js standalone、Nginx 代理
- Docker 部署 Node.js — Express/Nest.js 容器化、PM2、Nginx 反向代理
- Docker Swarm 集群编排实战 — Manager/Worker 节点、Service 滚动更新与回滚、Secrets、ingress 负载均衡与高可用
- 数据库容器化实战:Postgres、MySQL 与 Redis — 数据目录语义、初始化脚本、持久化与命名卷选型、备份恢复、性能陷阱
- 健康检查与自愈:healthcheck、重启策略与依赖编排 — HEALTHCHECK 参数、重启策略与退出码、崩溃循环退避、service_healthy 依赖编排
- 多集群多区域镜像同步与分发 — 分发拓扑、Harbor/ECR 复制、Registry Mirror、Dragonfly/Nydus P2P 加速、tag 漂移治理
五、存储、网络与安全
生产环境的持久化、通信与安全策略:
- Docker Volume 与网络 — 三种持久化方案、网络模式、自定义 DNS 发现
- Docker 存储驱动与 OverlayFS 深度解析 — 镜像分层与 Copy-on-Write 原理、overlay2、可写层行为、磁盘瘦身
- Docker 生产安全指南 — 镜像扫描、非 root 运行、Secret 管理、Harbor Registry
- Docker 镜像供应链安全 — 漏洞扫描门禁、SBOM 清单、Cosign 签名、SLSA 合规、可信 Registry 准入
- Rootless 模式与容器安全深度解析 — capabilities、user namespaces、seccomp/apparmor、Falco/sysdig
- 私有镜像仓库 Harbor 实战 — Harbor 架构、RBAC、镜像复制、Trivy 漏洞扫描、OIDC 集成
- 容器网络安全与隔离:从 CNI 到服务网格 — 网络命名空间与 iptables/nftables、零信任 NetworkPolicy(Calico/Cilium)、加密流量与 mTLS、服务网格
- 容器配置管理与密钥管理:env/secret/config — Docker Secrets/configs 注入、compose secrets、Vault/云厂商 Secret Manager、密钥轮换与审计
- 镜像安全扫描与 SBOM:Trivy、Grype、Clair 与 CI 门禁 — 扫描器对比、CycloneDX/SPDX 格式、漏洞修复策略、CI 安全门禁、Harbor/ECR 持续扫描与合规
六、监控、日志与排障
容器可观测性与问题排查实践:
- Docker 容器监控与日志实践 — cgroups 资源限制、docker stats、cAdvisor + Prometheus、日志驱动与轮转、健康检查与告警
- Docker 容器排障与调试实战 — 退出码定位、OOM 排查、docker exec/nsenter、netshoot 调试工具链、标准化排障 SOP
- 容器资源限制与 cgroup 深入 — CPU/内存/IO 配额、cgroup v1/v2、OOM 与 oom-score、swappiness 与 page cache、预留 vs 限制、资源监控告警
- Docker Daemon 运维:systemd 集成、配置调优与日志治理 — systemd 单元字段与 daemon.json、drop-in 覆盖与配置优先级、热重载边界、日志驱动与膨胀治理、journald 排障
- 容器 CPU 调度与 NUMA:绑核、实时性与 QoS 保障 — cgroup v1/v2 CPU 控制器、throttling 排查、实时调度与 RT 带宽、NUMA 拓扑与绑核绑内存、K8s CPU Manager
- GPU 容器与 AI 推理部署:NVIDIA Container Toolkit 与 MIG — Container Toolkit 架构、CUDA 镜像选型、–gpus 调度、vLLM 推理部署、MIG 切分与多卡、K8s Device Plugin
- 日志驱动与采集管道 — json-file/local/journald/fluentd 驱动对比、max-size 轮转与非阻塞背压、Fluent Bit/Vector/Promtail 采集管道、多行日志处理与排障
- 容器网络排障实战 — nsenter/netshoot 进入命名空间、veth 对端定位、DOCKER-USER 与 DNAT 规则、内嵌 DNS 解析器、MTU 分片与 conntrack 表满
七、CI/CD 流水线与交付
容器化的最后一公里:从构建到安全交付:
- Docker 与 CI/CD 流水线集成:从构建到交付 — GitHub Actions/GitLab CI 构建、layer cache 加速、Cosign 签名与扫描门禁、多环境 promotion、blue-green/渐进交付、Harbor/ECR 仓库管理
- DinD/DooD 与临时 CI Runner — docker:dind 的 privileged/TLS 配置、嵌套 storage driver 陷阱、docker.sock 挂载风险边界、GitLab Runner 与临时 runner 落地、层缓存复用与安全加固
八、关联专题
| 专题 | 对应内容 |
|---|---|
| Kubernetes 专题 | 容器编排的高级方案,与 Docker 互补 |
| DevOps 专题 | CI/CD 流水线中的容器化实践 |
| Security 专题 | 容器安全纵深防御与合规审计 |
| Node.js 专题 | 后端框架的 Docker 化前置知识 |
| Frontend 专题 | 前端框架的 Dockerfile 模板与构建优化 |
| HPC 专题 | 科学计算集群中的容器化(Singularity/Apptainer) |
Docker 的核心价值
Docker 解决了「在我机器上能跑」的经典问题:
| 场景 | 没有 Docker | 有 Docker |
|---|---|---|
| 新员工入职 | 1-3 天环境配置 | docker-compose up 一键启动 |
| 生产部署 | 手动安装依赖,版本冲突频发 | 镜像即环境,版本锁定 |
| 横向扩容 | 配置新服务器数小时 | docker swarm 或 K8s 秒级调度 |
| 回滚 | 手动撤销变更,风险高 | docker image 历史版本秒级回滚 |
Docker 不是虚拟机的替代品,而是应用打包与交付的标准格式。理解容器与虚拟机的差异(共享内核 vs 独立内核),是正确使用 Docker 的前提。
专题统计
- 文章数量: 44 篇深度文章(核心教程 + 进阶实践)
- 覆盖领域: 基础概念、运行时、Dockerfile、Compose、Swarm、Buildx 多平台、存储驱动、供应链安全、监控日志、排障、Harbor、网络隔离与零信任、进程管理、密钥管理、CI/CD 流水线、资源限制、Windows 容器、OCI 工件规范、containerd 插件扩展、边缘容器与轻量运行时、远程构建缓存、镜像签名与准入、数据库容器化、健康检查与自愈、多集群镜像分发、SBOM 扫描、Daemon 运维、CPU/NUMA QoS、GPU 推理、Podman 迁移、Buildx Bake 多目标构建编排、日志驱动与采集管道、OrbStack/Colima 本地运行时、DinD 与临时 CI Runner、容器网络排障
- 难度分布: 入门 20% → 中级 35% → 高级 45%
- 总预估阅读时间: 约 988 分钟