Docker 是什么:容器化与解决什么问题
本教程共 25 篇 · 第 1 篇 · 更新于 2026-07-26 · 约 6 分钟阅读
1. Docker 是什么:容器化与解决什么问题
本节目标:搞清楚容器到底是个啥,Docker 为什么能让「在我机器上能跑」这句话成为历史,学完你能跟人解释清楚容器和虚拟机的区别。
先从一个熟悉的场景说起
假设你在做一个 Web 应用,前端用 React,后端用 Python,数据库是 PostgreSQL。要把它跑起来,你得在本机装 Node、Python、PostgreSQL,还得保证版本和同事、和线上一致。
装着装着问题就来了:你的 Python 是 3.12,同事是 3.10,CI 服务器是 3.11。某个库在 3.12 上有 bug,换个版本又好了。更别提数据库版本、系统依赖、环境变量,一个个对下来能折腾一整天。
这还没完。等你终于跑通了,部署到测试环境又报错,到了生产又出岔子。你一边排查一边嘟囔:「明明在我机器上能跑啊!」
这句话,大概是每个开发者都踩过的坑。Docker 就是为了消灭这个坑而生的。
容器到底是什么
一句话:容器是一个隔离的进程,里面装着应用运行需要的全部东西。
打个比方。你点了一份外卖,送来的是个密封餐盒——菜、饭、调料、餐具全在里面,打开就能吃,不依赖你家厨房里有什么。容器就是给应用打包的这个「餐盒」。应用代码、运行时、依赖库、配置文件,统统打进去,到哪都能原样跑起来。
容器有几个特点,记住了你对它的理解就到位了:
- 自包含:不依赖宿主机预装的东西,自己带齐了一切。
- 隔离:容器之间互不干扰,一个崩了不影响另一个。
- 独立:删掉一个容器不影响别的,可以单独管理。
- 可移植:在你笔记本上跑的容器,放到数据中心、云服务器上,行为一模一样。
容器和虚拟机有啥区别
提到容器,很多人会联想到虚拟机(Virtual Machine,VM)。这俩确实都做「隔离」这件事,但路子完全不同。
虚拟机是模拟一整套计算机,自带完整的操作系统、内核、驱动,跑起来很重。你为了隔离一个应用,去虚拟一整个操作系统,这开销可想而大。
容器则轻得多。它不虚拟硬件,也不装完整操作系统,而是直接共享宿主机的内核,只把应用和它需要的东西隔离出来。所以容器启动是秒级的,占用资源也少得多。
| 对比项 | 虚拟机 | 容器 |
|---|---|---|
| 隔离方式 | 完整操作系统 + 虚拟硬件 | 共享内核,隔离进程 |
| 启动速度 | 分钟级 | 秒级 |
| 资源占用 | 重,GB 级 | 轻,MB 级 |
| 隔离强度 | 强(独立内核) | 较弱(共享内核) |
| 典型用途 | 跑不同操作系统 | 跑同内核下的多个应用 |
Tip容器和虚拟机不是非此即彼。云上常见做法是:先开一台虚拟机,再在这台机器上跑一堆容器。虚拟机负责硬件级隔离,容器负责应用级隔离,两者配合能榨干机器性能。
Docker 解决了哪些痛点
容器是技术概念,Docker 是把容器用起来的工具。它把「打包、分发、运行」这套流程做得很顺,让你不用关心底层细节。
它主要解决三个老大难问题:
1. 环境一致性。 开发、测试、生产环境终于能一样了。应用连同依赖打包成镜像,到哪都是同一个镜像,不再有「换个地方就报错」。
2. 依赖冲突。 老项目要 Python 2,新项目要 Python 3,以前得折腾虚拟环境或者多台机器。现在各跑各的容器,互不打架。
3. 快速部署和扩缩容。 容器启动只要几秒,流量来了多起几个,流量下去再关掉。这种弹性是传统部署很难做到的。
什么场景适合用 Docker
不是所有东西都要容器化,但下面这些场景,Docker 特别能打:
- 微服务架构:每个服务独立打包成容器,单独部署、单独扩缩,互不牵连。
- CI/CD 流水线:把构建、测试环境固化成镜像,Jenkins、GitLab CI 里跑起来又快又稳。
- 开发环境标准化:新人入职,一条命令拉起全套依赖服务(数据库、缓存、消息队列),不用再花一天配环境。
- 云原生基础:Kubernetes 这类编排工具,管的就是容器。想学 K8s,Docker 是绕不过去的第一步。
NoteDocker 诞生于 2013 年,用 Go 语言写成。从 v28 起 Docker Engine 改用逐年递增的大版本号(28 → 29 → …),本教程基于当前最新的 Docker Engine 29.6.2(2026-07-16 发布)。后续涉及命令和默认行为,都以这个版本为准。
小结
这一节我们聊了容器是什么、和虚拟机的区别,以及 Docker 到底解决了什么问题。说白了,容器就是给应用一个「到哪都能跑」的标准化外壳,Docker 则是做这层外壳最趁手的工具。
理解了「为什么」,下一节我们就来看 Docker 内部长什么样——它的架构、几个核心概念,以及底层靠什么实现隔离。