Skip to content

第 07 课 · 容器与虚拟机

隔离有轻有重:工位、标准化隔间、独立分公司。

作者:曹宇春


先记住这个类比

方式类比隔离强度开销
普通进程各部门工位
容器(Docker)标准化实验隔间,共享公司总管
虚拟机(VM)楼里再建一整栋分公司(自带总管)

容器靠 Linux 内核的 namespace(各看各的进程树/网络)cgroup(限 CPU/内存额度)


正式概念(人话版)

为什么 Mac 上 Docker「更重」?

容器特性绑在 Linux 内核上。
macOS 内核不是 Linux → Docker Desktop 往往先起一个 Linux 虚拟机,容器跑在 VM 里。

≈ 先租一层 Linux 分部,再在里面开隔间。
所以:VM + 容器两层内存,16GB Mac 很容易顶满。

和 git worktree 的差别

git worktreeDocker
隔离什么代码目录运行环境(依赖、网络视图、限额)
典型用途多 Agent 改同一仓库不撞车部署一致、依赖隔离

多 Cursor Agent:优先 worktree(便宜);要复现服务器环境:再上 容器


在你电脑上看一眼

bash
# 若装了 Docker
docker info 2>/dev/null | head -25
docker ps 2>/dev/null

# 未安装时至少理解:进程列表里有无 Docker / 虚拟机相关进程
ps aux | grep -iE 'docker|lima|qemu|virtual' | grep -v grep | head

不用 Docker 时本课也值得读:很多「云函数 / CI」本质是别人机房里的隔离隔间。


开发里什么时候用得上

  • 「本地能跑、服务器挂」:环境不一致——容器就是用来对齐的
  • Mac 内存紧:少挂常驻容器;用完 docker compose down、清无用镜像
  • 数据库进容器:方便,但记住数据卷也在吃仓库空间

练习

  1. 口述:进程、容器、VM 三种隔离的差别(各一句)。
  2. 若你用 Docker:看当前跑了几个容器、大概吃多少内存。

小结

  • 容器共享内核、隔离视图与配额;VM 自带内核
  • Mac Docker ≈ Linux VM + 容器
  • 开发并行改代码:worktree;对齐运行环境:容器

下一课:手册怎么变成上班中的部门——从源码到进程。

© 曹宇春 · 个人学习整理,欢迎交流