docker-进阶完整学习路线

Docker 进阶完整学习路线

·10 分钟阅读·3869 字
📋 目录

Docker 进阶完整学习路线

核心概念 Docker 进阶学习路线,面向云原生运维和容器开发,覆盖底层原理、网络存储、生产运维和安全等模块。

1. 前置基础(进阶前必须吃透)

  1. 基础镜像、容器生命周期、run/create/start/stop/rm/rmi 基础命令;
  2. Dockerfile 基础指令 FROM/COPY/ADD/RUN/CMD/ENTRYPOINT/EXPOSE;
  3. 基础网络模式:bridge、host、none;
  4. 基础存储:bind mount、volume;
  5. 简单镜像推送拉取私有仓库。

下面分 9 大进阶模块,按学习顺序整理,包含知识点、作用、生产场景。

模块1:Dockerfile 进阶优化(镜像瘦身、安全、分层缓存)

2. 多阶段构建 Multi-stage(最核心进阶)

  • 解决痛点:编译环境、依赖打包进最终镜像,镜像巨大;
  • 原理:分构建阶段、运行阶段,只拷贝编译产物,丢弃编译器、源码、工具;
  • 适用:Java Maven、Go、Node、Python 项目;
  • 实操:Go 编译镜像、SpringBoot 分层打包。

3. 分层缓存机制

  • RUN、COPY 分层缓存规则:文件不变则复用缓存,加快构建;
  • 优化技巧:先拷贝依赖文件安装,再拷贝业务代码。

4. 专用轻量化基础镜像

  • alpine 极简镜像(musl libc,体积小,部分软件兼容性坑);
  • distroless 无操作系统镜像,只有运行时程序,无shell、包管理器,安全性极高;
  • scratch 空白镜像(Go静态编译专用)。

5. 指令进阶区分

  1. COPY vs ADD:ADD 自动解压远程压缩包,COPY 仅复制;
  2. CMD 与 ENTRYPOINT 完整区别、组合用法;
  3. USER 指定运行用户(禁止容器内root运行,安全加固);
  4. WORKDIR、HEALTHCHECK 容器健康自检;
  5. ARG 构建时参数、ENV 运行时环境变量;
  6. VOLUME 匿名卷自动挂载坑。

6. 镜像安全加固

  • 不使用latest标签,固定版本;
  • 禁止容器root运行;
  • 清理yum/apt缓存,减少漏洞面;
  • 禁止内置ssh、curl等高危工具;
  • 镜像漏洞扫描:trivy。

模块2:Docker 存储进阶(对应K8s存储底层原理)

7. 三种存储完整对比

  1. Bind Mount:宿主机指定目录挂载,生产风险(权限、文件覆盖、宿主机依赖);
  2. Named Volume:Docker管理持久卷,独立生命周期,推荐容器持久化;
  3. tmpfs 内存挂载(临时缓存,速度快,Pod EmptyDir内存底层实现)。

8. 存储驱动原理(重点)

overlay2(当前默认驱动)分层读写机制:

  • 镜像只读分层;容器上层可写层;
  • 写时复制CoW原理;
  • 磁盘占用、分层删除逻辑;
  • devicemapper/aufs 老旧驱动淘汰原因。

9. 数据生命周期

  • 删除容器不删除volume;
  • docker volume prune 清理无用卷;
  • 匿名卷残留垃圾数据问题。

模块3:Docker 网络进阶(对应Calico、Service底层网络)

10. 四大原生网络深度原理

  1. bridge 默认网桥:veth pair、iptables NAT、容器互通;
  2. host 共享宿主机网络栈(无独立IP,端口冲突风险);
  3. none 无网络;
  4. container 共享其他容器网络(Pod pause共享网络底层实现)。

11. 自定义网桥 docker network create

  • 不同网桥容器默认隔离;同一网桥自动互通;
  • 替代默认bridge,多业务网络隔离。

12. 端口转发、iptables SNAT/DNAT底层机制

  • -p 端口映射内核规则;
  • 容器访问外网SNAT;外网访问容器DNAT。

13. Macvlan / Ipvlan 高级网络

容器分配宿主机同网段独立物理IP,无端口映射,适合传统业务容器化。

14. Docker DNS、容器域名互通

同一网络内容器名称互相解析,Docker内置DNS服务器。

模块4:Docker Compose 生产级编排(单机多容器管理)

15. compose.yaml 高阶语法

  • service 依赖 depends_on、启动顺序控制;
  • volumes 命名卷、bind挂载、tmpfs;
  • networks 自定义隔离网桥;
  • environment、.env 环境变量分离;
  • restart 重启策略 always/on-failure;
  • healthcheck 服务健康检查;
  • privileged、cap_add/cap_drop 权限管控;
  • resource 限制 mem_limit、cpus(对应K8s limits底层cgroup)。

16. 常用命令进阶

up -d / down / stop / logs -f / exec / ps
多环境区分:compose -f dev.yaml、prod.yaml。

17. 典型场景

单机中间件集群:ES、Redis、MQ 一键启停整套环境。

模块5:容器资源限制与安全进阶(Cgroup、Capabilities)

18. Cgroup 资源限制底层

  • —memory 内存限制,OOM触发机制;
  • —cpus CPU核心配额、CPU权重—cpu-shares;
  • —blkio 磁盘IO限速;
  • 对应K8s requests/limits底层实现。

19. Linux Capabilities 细粒度权限

  • —privileged 全开权限(高危,禁止生产);
  • cap_add / cap_drop 精细增减权限;
  • 容器默认删除高危权限:CAP_SYS_ADMIN、CAP_NET_ADMIN等;
  • 容器逃逸风险原理。

20. 容器安全全套加固

  1. 非root用户运行容器 USER;
  2. 只读文件系统 —read-only;
  3. 挂载目录只读 :ro;
  4. 禁止特权容器;
  5. 限制系统调用 seccomp;
  6. 镜像漏洞扫描 trivy;
  7. 私有仓库HTTPS、镜像签名。

21. 常用安全参数示例

docker run --read-only --cap-drop ALL --user 1001 --memory 512m --cpus 0.5

模块6:镜像仓库与镜像分发进阶

22. 私有仓库搭建

  • registry 官方私有仓库;
  • Harbor 企业级仓库(权限、漏洞扫描、项目隔离、复制);

23. 仓库安全

HTTPS自签证书、basic认证、镜像推拉鉴权;

24. 镜像管理进阶

  • docker save / load 离线镜像迁移;
  • docker export / import(丢失分层,不推荐生产);
  • 镜像重标签 tag、批量清理镜像;
  • 镜像分层查看 docker history。

模块7:Docker 底层内核原理(运维面试高频)

25. 容器三大隔离技术(核心)

  1. Namespace 资源隔离
    PID、Net、Mount、User、IPC、UTS 六大命名空间;
    对应Pod pause容器共享netns原理。
  2. Cgroup 资源限制(CPU/内存/IO);
  3. rootfs 根文件系统分层镜像(overlay2)。

26. 容器与虚拟机本质区别

虚拟机:完整内核+硬件虚拟化;
容器:共享宿主机内核,仅隔离用户态资源,轻量化。

27. 进程模型

容器1号进程、僵尸进程回收、信号转发(docker stop 发送SIGTERM)。

模块8:Docker 运维排错进阶

28. 容器启动失败排查

docker logs、docker inspect、健康检查失败、端口占用、权限不足、目录不存在。

29. 资源故障

容器OOM被杀死、CPU占满、磁盘卷空间爆满;

30. 网络故障

容器互通失败、端口映射失效、外网不通、DNS解析失败;

31. 镜像故障

分层丢失、缓存失效、多阶段构建产物缺失;

32. 调试工具

docker exec、nsenter 进入容器命名空间、trivy漏洞扫描。

模块9:Docker 生产最佳实践 & 迁移K8s过渡

  1. 容器重启策略规范;
  2. 统一资源限制,避免抢占宿主机资源;
  3. 禁止privileged、root运行;
  4. 镜像分层瘦身、多阶段构建;
  5. 数据统一使用named volume,杜绝bind mount;
  6. 业务compose平滑迁移至Deployment;
  7. 日志标准输出stdout/stderr(对接容器日志采集)。

二、学习优先级路线(由浅到深)

  1. Dockerfile 进阶(多阶段、轻量化镜像、安全)
  2. 存储驱动 overlay2 + 三种卷完整区别
  3. Docker 网络原理、自定义网桥、macvlan
  4. Compose 完整生产语法、多环境管理
  5. 资源限制 cgroup、cap权限安全加固
  6. 底层隔离原理 Namespace/Cgroup/rootfs
  7. 私有仓库 Harbor、镜像扫描、离线迁移
  8. 容器排错全套方案
  9. 生产规范,向K8s过渡改造

三、学完能解决什么问题

  1. 制作极小、安全、无漏洞业务镜像;
  2. 看懂容器网络、存储底层,排查网络/IO故障;
  3. 理解K8s底层存储、网络、资源限制的Docker源头;
  4. 企业单机多服务compose编排、本地开发环境标准化;
  5. 容器安全加固,规避容器逃逸、资源雪崩;
  6. 排查容器OOM、启动失败、网络不通等线上故障。

关联文档