Docker 是一个开源的容器化平台,它让你可以把应用及其所有依赖(代码、运行环境、系统工具、库等)打包成一个轻量级、可移植的容器。
打个比方:传统部署像搬家时需要带上整个房子(虚拟机),而 Docker 像用标准集装箱装货物,无论用火车还是轮船,箱子里的东西始终不变、且高效堆叠。
Docker 的核心概念
-
镜像(Image):一个只读的模板,包含了运行应用所需的一切(如 Ubuntu + Nginx + 你的代码)。类似“类”或“快照”。
-
容器(Container):镜像的运行实例。你可以启动、停止、删除它。容器之间相互隔离,但共享宿主机操作系统内核。
-
仓库(Registry):存放镜像的地方,最著名的是 Docker Hub(类似 GitHub for Docker 镜像)。
为什么用 Docker?(核心优势)
-
环境一致,解决“在我电脑上能跑”
开发、测试、生产环境完全一致。避免了因操作系统版本、依赖库不同导致的诡异问题。 -
轻量高效
容器共享宿主机内核,没有完整 OS 开销。相比传统虚拟机(VM),Docker 容器启动快(毫秒级)、占用空间小(MB 级 vs VM 的 GB 级)、一台物理机可运行成百上千个容器。 -
可移植性
只要有 Docker 引擎(Linux、Windows、Mac 甚至云服务器),就能运行你的容器。一次构建,到处运行。 -
简化交付与部署
传统部署需要写复杂的手册:安装依赖、配置环境。现在只要告诉对方docker run your-image。CI/CD 流程中 Docker 是标准交付物。 -
资源隔离
每个容器有自己的文件系统、进程空间、网络接口。不会互相干扰,安全性提升。 -
微服务与弹性伸缩
天然适合微服务架构:每个服务跑在自己的容器里。配合 Kubernetes 等编排工具,可以自动扩缩容、滚动升级。
Docker vs 传统虚拟机(VM)
| 特性 | Docker 容器 | 传统虚拟机 |
|---|---|---|
| 启动速度 | 毫秒级 | 分钟级 |
| 占用空间 | MB 级别(镜像) | GB 级别(含完整 OS) |
| 性能损耗 | 几乎为零(原生性能) | 有一定开销(Hypervisor 虚拟化) |
| 隔离级别 | 进程级隔离(共享内核) | 硬件级隔离(各自有内核) |
| 数量 | 一台宿主机可运行数百上千个 | 通常几十个 |
| 典型场景 | 微服务、CI/CD、开发测试环境 | 需要强安全隔离、运行不同 OS 类型(如 Linux 上跑 Windows) |
总结一句话:
Docker 是一种容器化技术,让你像管理代码一样管理整个运行环境,实现“打包一次,随处运行”,比虚拟机更轻、更快、更方便。 它是现代 DevOps、微服务和云原生架构的基石。