我一直觉得,Docker 这个词在开发圈子里被严重“神化”了。很多人一提到容器、镜像、编排就发怵,其实真上手之后你会发现,它最难的从来不是技术本身,而是被一堆英文术语绕晕了头。image、container、volume、compose、registry……单独拎出来每个单词都认识,放到一起就不知道谁是谁了。我当初从 Docker 入门到能在生产环境里熟练部署服务,中间踩了无数坑,后来琢磨出一个特别管用的思路:先不急着敲命令,把这套英文术语背后的原始含义搞清楚,Docker 的使用逻辑就自己通了。这篇文章我就按这个思路,把 Docker 的日常使用从头到尾捋一遍,从安装配置到常用命令,再到多容器编排和问题排查,争取让刚接触 Docker 的读者也能少走几周弯路。
1. 先搞懂 Docker 的“英文单词”,再谈使用
1.1 image 为什么叫“镜像”
接触 Docker 的第一个高频词就是 image,中文普遍翻译成“镜像”。很多人会困惑:这东西和镜像文件有什么关系?其实把它理解成“只读模板”更合适。image 是一个打包好的、包含了你运行应用所需要的一切的文件集合,里面可能有操作系统的基础文件、运行环境、依赖库、代码和启动命令。
我个人喜欢用一个类比:image 就像做月饼的模具,你拿同一个模具能压出无数个月饼,每个月饼长得都一模一样。Docker 的 image 也一样,它是只读的、分层的,你不能直接修改一个 image,只能基于它去创建容器。image 的内部采用分层存储,每一层都是一些文件系统的变更记录,就像 Git 的 commit 一样,层与层之间可以复用。这也是为什么你拉取一个基础镜像后,再拉基于它的镜像时会发现下载很快,因为那些公共层已经存在本地了。
1.2 container 的“集装箱”隐喻
container 这个词更妙,它的原义就是“集装箱”。海运领域的集装箱标准统一、隔离严密、可搬运到任何港口,装上任何有标准的货轮就能运走。Docker 的容器设计的正是这个思想:把应用及其运行环境打包成一个标准化单元,无论底层是 Windows、Linux 还是 macOS,拿起来就能跑。
和虚拟机相比,容器最大的区别是共享宿主机的操作系统内核。虚拟机里装的是完整的客户机操作系统,所以启动要按分钟计算;容器直接调用宿主机内核,只额外封装了应用需要的运行库和依赖,所以启动速度是毫秒级。你可以把容器理解成“轻量级的虚拟机”,但它隔离的不是硬件,而是操作系统层面的进程和文件系统。
如果还想再深一层,可以把 image 和 container 的关系类比成“类与实例”的关系。image 是类,是静态定义;container 是 new 出来的实例,是真正跑起来的东西。你基于同一个镜像可以启动多个容器,彼此互不干扰,每个容器都有自己独立的文件系统、网络栈和进程空间。
1.3 registry 和 repository 的关系
每次执行 docker pull 的时候,实际上就是从远程仓库拉取镜像,这个远程仓库在英文里叫 registry,而镜像存放的具体位置叫 repository。这两个词用 Git 来类比特别好懂:registry 就像 GitHub,repository 就是一个具体的项目仓库。Docker 官方的公共 registry 叫 Docker Hub,你可以理解成镜像界的“应用商店”。
repository 下面往往会有多个 tag,也就是版本标签。比如 mysql 这个 repository 里面有 8.0、5.7、latest 等 tag,冒号后面的就是 tag。拉取时 docker pull mysql:8.0 其实拉的是名为 mysql 的 repository 里 tag 为 8.0 的那个镜像版本。我在实际工作中经常看到有人把 repository 和 registry 混着说,一旦理解了它们的层级关系,沟通就顺畅很多。
1.4 volume、network、compose 这些词的原义
volume 英文原义是“卷宗、册”,后来引申为“卷、容量”。在 Docker 里 volume 就是用来做数据持久化的“外部存储”,相当于给容器外挂了一个U盘,容器删了数据还在。network 很简单,就是容器之间的网络连接配置,默认的桥接网络相当于给每个容器发了个局域网 IP。compose 原义是“作曲、构成”,Docker Compose 的意思就是把多个容器“编排”成一个整体,有点像用乐谱把各种乐器组合成交响乐。
说实话,这些英文术语理解到位之后,Docker 的文档看起来完全是两种样子。官方文档里的英文词汇不再是生词,而是帮助你理解设计意图的路标。这也是为什么我总是建议新手先花半小时过一遍常见的 Docker 术语,这比盲目敲命令高效得多。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. Docker 怎么装:Windows 和 Linux 两条路线
2.1 Windows 环境安装 Docker Desktop
Windows 上使用 Docker 的主流方式是安装 Docker Desktop。它自带图形界面,还集成了 Docker Engine、Docker Compose、Kubernetes 等组件,日常开发完全够用。但 Docker Desktop 有两个硬性前提:一个是系统版本要支持 WSL2 或者 Hyper-V,另一个是 BIOS 里必须开启虚拟化。
我第一次在 Windows 上装 Docker Desktop 时,就卡在了最常见的报错上:Docker Desktop failed to start because virtualization support wasn't detected,提示“virtualization support not detected”。这个报错的核心原因有三个:一是 BIOS 没开启虚拟化,需要进 BIOS 把 Intel VT-x 或 AMD-V 打开;二是 Windows 的 Hyper-V 功能没启用;三是系统里装了其他占用虚拟化功能的软件,比如某些安全软件或者旧版虚拟机软件,需要先卸载或关闭。
确认虚拟化是否开启的方法很简单:打开任务管理器,切到“性能”标签,看左下角有没有“虚拟化: 已启用”。如果没有,就重启进 BIOS 设置界面,找到 Intel Virtualization Technology 或 SVM Mode,改成 Enabled。这一步是 Windows 上安装 Docker 最容易翻车的地方,一定要先确认好再继续。
2.2 WSL2 和 Docker Desktop 的配合
现在新版 Docker Desktop 默认使用 WSL2 作为后端,因为 WSL2 比 Hyper-V 更轻量,启动更快,资源占用更可控。安装 Docker Desktop 之前,最好先装好 WSL2。在管理员权限的 PowerShell 里执行 ws
