🐳 Docker 简介
什么是 Docker?
想象你要搬家——从北京搬到上海。传统方式是把家具一件件拆开、打包、运输、再组装。而 Docker?Docker 就是一个标准化的集装箱:你把整个房间(包括家具、电器、甚至墙上的画)原封不动地装进集装箱,搬到新地方,打开门,一切都在,一切都能用。
在技术世界里,Docker 是一个容器化平台,它让你可以把应用程序和它的所有依赖(库、配置文件、运行时环境)打包成一个轻量级的、可移植的"容器",在任何支持 Docker 的机器上都能跑起来。
💡 提示: 💡 一句话总结:Docker 解决了"在我电脑上能跑啊!"这个世纪难题。
为什么需要 Docker?
假设你在开发一个 Python Web 应用:
- 你的电脑是 Python 3.11,服务器是 Python 3.8
- 你用 Ubuntu,同事用 macOS,测试服务器是 CentOS
- 你装了 Redis 7.0,生产环境是 Redis 6.2
结果?"在我电脑上能跑啊!"——经典名场面。Docker 让所有人、所有环境都用同一个集装箱,彻底告别环境不一致的问题。
虚拟机 vs 容器
很多人会问:虚拟机不也能做到吗?能,但就像用大炮打蚊子。来看对比:
| 对比项 | 虚拟机 (VM) | 容器 (Docker) |
|---|---|---|
| 比喻 | 一栋独立别墅 | 公寓里的一个房间 |
| 启动时间 | 分钟级(要盖房子) | 秒级(开门就行) |
| 占用资源 | GB 级(每个 VM 都有完整 OS) | MB 级(共享宿主机内核) |
| 隔离级别 | 完全隔离(硬件级别) | 进程级别隔离 |
| 密度 | 一台物理机跑几十个 VM | 一台物理机跑成百上千个容器 |
| 镜像大小 | 几 GB | 几 MB 到几百 MB |
Docker 三大核心概念
1. 镜像 (Image)
镜像就是集装箱的设计图纸——它是一个只读的模板,包含了运行应用所需的一切。你可以从 Docker Hub(镜像仓库)下载别人做好的镜像,也可以自己用 Dockerfile 来制作。
2. 容器 (Container)
容器是根据图纸造出来的集装箱——镜像的运行实例。你可以从同一个镜像启动多个容器,就像用同一个设计图造出很多个集装箱。
3. 仓库 (Registry)
仓库就是集装箱的堆场——存放镜像的地方。Docker Hub 是最大的公共仓库,你也可以搭建私有仓库。
📝 备注: 📝 记忆口诀:镜像是菜谱,容器是做出来的菜,仓库是放菜谱的图书馆。