什么是 Docker(软件集装箱宇宙)?
过去程序员常说“在我电脑上明明能跑,怎么到你那就不行了?” —— 而 Docker 就像软件工业的标准化海运集装箱:把你的代码、Python 环境、配置文件和所有依赖统统打包进一个箱子,在全宇宙任何服务器上 0.1 秒开箱即跑!
盖一整栋大楼,动辄几十 GB
每个虚拟机都要虚拟出一整套完整的硬件(CPU/网卡/硬盘)并在上面安装一整套沉重的 Guest OS(如 Windows/Ubuntu)。启动耗时几分钟,内存开销巨大!
- ❌ 臃肿庞大:动辄几十 GB 镜像,迁移像搬家一样累
- ❌ 启动龟速:必须走完整套 BIOS 与操作系统内核引导流程
独立精装单间,几 MB 秒级拉起
所有容器直接共享宿主机 Linux 内核,利用 Namespaces(视图隔离)和 Cgroups(资源配额)划出独立安全结界。体积仅需几十 MB,启动只要 0.1 秒!
- ✨ 极度轻量:毫秒级启动,一台机器可并发跑上千个容器
- ✨ 环境绝对一致:一次构建(Build Once),到处稳定运行(Run Anywhere)
拆解 Docker 核心宇宙的 4 大核心基石
从代码蓝图到容器隔离,搞懂云原生时代的标准操作流程
1. Dockerfile 配方图纸
纯文本声明文件。逐行描述如何安装操作系统底座、拉取依赖包、复制项目源码以及暴露网络端口。
2. Image 镜像(只读模板)
Dockerfile 构建出来的静态只读“光盘 / 蛋糕模具”。采用分层存储(Layer),可以方便地上传至 Docker Hub 供全球拉取。
3. Container 容器(运行实例)
镜像跑起来后的动态活体(用模具烤出来的蛋糕)。在只读镜像顶部挂载一层极薄的读写层,隔离独立运行。
4. OverlayFS 分层文件系统
洋葱式分层缓存机制:多个镜像共享相同的 Ubuntu 基础层,只需下载差异部分,极大节省磁盘与网络传输!
🕹️ Dockerfile 分层构建(Layered Build)显微镜
点击选择 Dockerfile 中的指令步骤,观察镜像如何像拼积木一样一层层叠加并复用缓存:
---> Pulling fs layer [debian-core:latest]
---> Using cache: 8f4a1c2d3e (Base OS Ready)
Linux 障眼法:Namespaces & Cgroups
Namespaces 给进程戴上了“虚拟现实眼镜”,让它以为整台机器只有它一个进程(独立 PID/网络/挂载点);
Cgroups 则是铁面管家,严格限制这个容器最多只能用 2 核 CPU 与 4GB 内存,绝不让单个容器搞崩主机。
Docker 与 Kubernetes (K8s)
如果 Docker 制造了一个个标准集装箱;
那么 Kubernetes(K8s) 就是负责指挥几万艘集装箱货轮的超级港口调度中枢 —— 负责自动扩容、故障自愈与跨机房编排。
Nvidia-Docker 驱动 GPU 直通
在当今大模型训练中,Nvidia Container Toolkit (nvidia-docker) 将物理显卡的 CUDA 驱动直接打通挂载进容器。
使得千万卡算力集群能够随时随地秒级启动 PyTorch / vLLM 推理镜像,成为 AI 算力落地的统一标准。