首页 / 知识库 / 系统架构体系 / docker入门

01 - Docker 是什么

先从一个真实的痛点说起

你有没有遇到过这种情况:

  • 你写的 AI 程序在自己电脑上跑得好好的,发给同学,他一运行——报错
  • 你本地用 Python 3.10,服务器是 3.8,一堆包装不上。
  • 训练好的模型,换台机器 CUDA 版本不对,直接跑不起来。

这就是经典的一句话:

“在我电脑上是好的呀?“(It works on my machine.)

问题的根源是:程序不是孤立运行的,它依赖一大堆环境——操作系统、Python 版本、各种库、系统配置……换个环境,这些依赖对不上,程序就崩。

AI 开发尤其惨,因为我们的依赖特别重、特别多:Python、PyTorch、CUDA、cuDNN、几十个 pip 包……配环境配到怀疑人生。

Docker 用一句话解决这个问题

Docker 把你的应用 + 它需要的所有依赖环境,一起打包成一个标准的”集装箱”,这个集装箱搬到任何电脑上,都能一模一样地运行。

你不再交付”一份代码 + 一长串安装说明”,而是直接交付一个打包好、开箱即用的整体

用集装箱来理解

Docker 的 logo 就是一头驮着集装箱的鲸鱼,这个比喻非常贴切:

  • 没有集装箱的年代:货物五花八门,每次换船、换码头都要重新搬运、重新适配,又慢又容易出错。
  • 有了标准集装箱:不管箱子里装的是什么,外面的尺寸都统一。任何船、任何码头、任何卡车都能直接装卸。

Docker 就是软件世界的标准集装箱

  • 箱子里:你的代码 + Python + 所有依赖库
  • 箱子外:标准接口,任何装了 Docker 的电脑都能直接运行

[配图:一头鲸鱼背上驮着很多集装箱,每个集装箱标注”我的AI应用""Python3.10""PyTorch”等]

Docker 和虚拟机有什么区别?

很多人会问:这不就是虚拟机吗?不是。区别很大。

对比项虚拟机(VM)Docker 容器
打包内容整个操作系统 + 应用只打包应用 + 依赖
体积几个 GB 起步通常几十~几百 MB
启动速度几十秒~几分钟秒级,甚至毫秒级
资源占用重,每个 VM 独占内存轻,共享主机内核
一台机器能跑几个几个几十上百个

一句话记忆:

虚拟机是”在你电脑里装了另一台完整的电脑”;Docker 是”只打包应用本身,共用你电脑的底座”。所以 Docker 又轻又快。

[配图:左边虚拟机——每个应用下面都背着一整个 Guest OS;右边 Docker——多个容器共享同一个底座,明显更薄]

小结

  • 痛点:环境不一致,导致”换个地方就跑不起来”。
  • Docker:把应用 + 依赖打包成标准”集装箱”,到哪都一样跑。
  • 对比虚拟机:Docker 更轻、更快、更省资源。

理解了”是什么”,下一章我们来认识 Docker 的三个核心概念,搞懂它是怎么运转的。


下一章 → 02 - 三个核心概念