容器把应用及其依赖打包成可在不同环境一致运行的单元;Docker 是最常用的实现与工具链之一。 镜像(image)是只读模板,容器(container)是镜像运行起来的可写实例——类比「类与对象」有助于记忆。

入门:镜像里有什么

  • 分层文件系统(union/overlay):多条只读层 + 一条可写层;共享层可节省磁盘与拉取时间。
  • 元数据:默认入口命令、环境变量、暴露端口声明等。

入门:容器与虚拟机差异(心智)

容器共享宿主内核,启动更快、开销更小,但隔离边界不同于完整 VM; 安全模型需结合 namespace/cgroup、seccomp、用户命名空间与镜像供应链(签名、漏洞扫描)。

深入:Dockerfile 常见层面

  • FROM:基础镜像选择决定补丁责任与攻击面。
  • RUN:构建期执行;合并命令减少层数是一种优化,但可读性需权衡。
  • USER:避免以 root 运行业务进程(能力需求除外)。
  • HEALTHCHECK:编排系统可据此重启不健康实例。

深入:数据放在哪

容器内写磁盘默认在可写层,删除容器即可能丢失;持久化应使用卷(volume)或绑定挂载(bind mount),并注意权限与 SELinux 标签

与进程、cgroup

进程与线程:容器本质仍是一组进程,受 cgroup 限制资源。

Kubernetes、Podman、nerdctl 等与 Docker CLI 概念相通但细节不同;生产安全基线请以组织规范与 CVE 通告为准。

与其它主题的衔接

Linux 权限防火墙(映射端口)、 Git(CI 里构建镜像)。