00概述Docker

概述
本系列是 Docker 的学习笔记,路线是「小白变怪兽」:从装好 Docker、跑出第一个容器开始,一路做到能手写一个迷你容器。
Docker 和 Java SE 那类语言笔记不太一样。语言的知识点可以先理解再动手;Docker 是一个完整的应用程序,知识几乎都长在手上——把 docker run 的每个参数敲明白,比背下「容器是什么」的定义有用得多。所以本系列不按概念分章,按关卡推进:每一关都是一条能跑通的操作链,命令随用随讲,成体系的收进 命令速查表。
本系列的运行环境是 macOS,涉及 Linux 与 Windows 差异的地方会单独点出。内容会作为知识节点,串连进后端路线中「部署与运维基础」一段。创作过程使用 AI 辅助以尽量减少错误,如有纰漏欢迎指出。
这套教程适合谁
面向运维工程师与后端开发人员,也适合任何想把「在我机器上是好的」这个问题彻底解决掉的人。
阅读前需要掌握 Linux 的常用命令(cd、ls、ps、文件权限、标准输入输出)。没有基础的话可以先补一下 Linux 教程,本系列涉及 Linux 的地方只讲与容器有关的部分。
怎么用这套教程
- 边读边敲:每关的正文就是操作步骤,只看不练等于没看。
- 关卡独立:每关自包含,跳读不会断档;需要用到上一关的成果时,会在开头交代。
- 命令去速查表:正文只在用到时给出命令,系统的整理收进 命令速查表;速查表上的反向链接会显示哪些关卡引用过它。
- 保留踩坑:报错与排查过程会留在正文里,它们比顺利跑通的命令更有信息量。
全系列地图
| 关 | 阶段 | 内容 | 实操产出 |
|---|---|---|---|
| 1 | 菜鸟 | 装好跑起来 | 选定运行时并跑出 nginx,在浏览器打开 |
| 2 | 菜鸟 | 玩转现成镜像 | nginx + mysql + redis 三连 |
| 3 | 菜鸟 | 写 Dockerfile | 写出第一个可交付的镜像 |
| 4 | 入门 | 数据持久化 | 容器删了,数据还在 |
| 5 | 入门 | 容器网络 | 容器之间、容器与宿主机互相说话 |
| 6 | 入门 | Compose 起全栈 | 一条命令起整套服务 |
| 7 | 入门 | Compose 进阶 | 服务按依赖顺序就绪,多环境一套配置 |
| 8 | 入门 | 容器里的进程 | 让容器优雅停止,不再硬等满 10 秒 |
| 9 | 进阶 | 构建进阶与镜像瘦身 | 镜像从 1GB 压到 100MB,构建也变快 |
| 10 | 进阶 | 推送与自动化构建 | 多架构镜像自动构建并推送 |
| 11 | 进阶 | 日志与磁盘治理 | 磁盘爆了,能查出是谁吃掉的 |
| 12 | 进阶 | 出事了怎么查 | 十分钟内定位到出错的那一层 |
| 13 | 进阶 | 容器安全 | 把容器关进笼子 |
| 14 | 进阶 | 资源限制与性能 | 一个容器压不垮机器 |
| 15 | 怪兽 | 底层原理 | 看懂 veth、iptables 与 overlayfs |
| 16 | 怪兽 | 手写迷你容器 | 自己造一个「Docker」 |
| 17 | 怪兽 | 综合实战 | 把真项目部署上线(附 K8s 衔接) |
| 18 | 附录 | 命令速查 | 全系列命令手册 |
四个阶段
- 菜鸟:跨过陌生感。三个动作对应 Docker 的三个基本对象——跑别人的、用别人的、造自己的。
- 入门:让容器真的能承载应用。四件事缺一不可——状态、通信、编排、生命周期。
- 进阶:从「能跑」到「能交付」。小、快、自动、查得动、关得住。
- 怪兽:解释前面每一步的「玄学」,最后收网到一个真项目。
Docker 是什么
Docker 是一个开源的应用容器引擎,用 Go 语言 编写,遵循 Apache 2.0 协议开源。
它让开发者可以把应用和依赖一起打包进一个轻量、可移植的容器,然后发布到任何流行的 Linux 机器上运行。容器之间相互隔离,性能开销极低。
这里要先纠正一个流行的直觉:容器不是安全沙箱。它靠 Linux 内核的 namespace 与 cgroups 做隔离,共享宿主机内核,隔离强度远不及虚拟机。把容器当成「轻量虚拟机」来理解,会在涉及权限与逃逸时踩大坑——这一点在第 13 关展开。
核心概念
- 镜像(Image):只读模板,定义了容器的运行环境(操作系统、软件、配置)。它采用分层存储,镜像之间可以共享层,空间与构建速度都因此受益。
- 容器(Container):镜像的运行实例,包含应用代码、运行时与依赖,彼此隔离,共享宿主机内核。
- Dockerfile:一个文本文件,描述如何自动构建镜像——从哪个基础镜像开始、装什么软件、复制哪些文件。
- 仓库(Registry):存放和分发镜像的地方。Docker Hub 是官方公共仓库,Harbor 一类属于私有仓库。
四者的关系是一条链:Dockerfile —构建→ 镜像 —运行→ 容器,而镜像存放在仓库里。
核心优势
- 跨平台一致性:解决「在我机器上能跑」的问题,让开发、测试、生产三套环境保持一致。
- 资源高效:直接共享宿主机内核,不必虚拟化整个操作系统,内存与 CPU 开销远小于虚拟机。
- 快速部署:容器秒级启动,扩缩容易于自动化。
- 隔离性:每个容器拥有独立的文件系统、网络与进程空间。
应用场景
- 微服务架构:每个服务独立容器化,便于管理与扩展。
- CI/CD 流水线:与 Jenkins、GitLab CI 等集成,实现自动化构建与测试。
- 开发环境标准化:新成员一键启动全套依赖服务(数据库、消息队列等)。
- 云原生基础:Kubernetes 等编排工具建立在容器之上。
附录
关于版本
Docker 从 17.03 版本起分为 CE(社区版)与 EE(企业版),本系列统一使用社区版 CE。
支持与分享
如果这篇文章对你有帮助,欢迎分享给更多人或打赏支持!





