Docker 笔记(一)镜像篇:分层原理、Dockerfile 写法与镜像瘦身
镜像不是单个文件,是一叠只读层。这篇讲清联合文件系统与写时复制、Dockerfile 每条指令分别产生什么代价、构建缓存怎么命中(为什么改一行代码要重装依赖)、多阶段构建怎么把 1.2G 瘦到 120M,以及基础镜像怎么选。
从一个关键词,发现新的思路。
镜像不是单个文件,是一叠只读层。这篇讲清联合文件系统与写时复制、Dockerfile 每条指令分别产生什么代价、构建缓存怎么命中(为什么改一行代码要重装依赖)、多阶段构建怎么把 1.2G 瘦到 120M,以及基础镜像怎么选。
单个容器好管,一堆容器就靠 Compose。但 Compose 里最容易踩的不是语法,是「启动顺序」和「日志把磁盘吃光」。这篇给一份能直接改用的 Java + MySQL + Redis 编排示例,讲清 depends_on 为什么只等启动不等就绪、日志驱动怎么配才不会撑爆根分区,以及上线前必须过一遍的检查清单。
前四篇是按知识点讲的,这篇是反过来用的:命令忘了、线上出事了,回来翻。上半部分按镜像、容器、网络、存储、Compose、系统清理分组整理常用命令,能直接复制;下半部分是 12 个真实场景案例,每个给出现象、怎么查、结论三步。
容器写挂载目录报 Permission denied,根因常是 UID 不一致,也可能是 SELinux 或只读挂载。顺带整理容器时区不对、构建缓存导致改了代码镜像没更新两个小坑,每条都给出复现现象与 id、ls -ln、docker exec 排查命令。
讲清 Spring Boot 的自动装配与启动流程,整理日常最常写的扩展点(拦截器、全局异常、参数校验、异步、定时任务、优雅停机、Actuator),附一份生产 application.yml 配置清单和启动慢、配置不生效的排查方法。
RocketMQ 从部署到生产的完整笔记:NameServer/Broker/Producer/Consumer 架构与 CommitLog 存储设计,普通/顺序/事务/延迟消息的写法与适用边界,消息堆积与重复消费的排查套路,附常用 mqadmin 命令和一份生产参数配置。
Redis 的完整实战笔记:五种基础结构的适用场景与命令,缓存穿透/击穿/雪崩的成因与解法,过期与内存淘汰策略,热 key 和大 key 的发现与处理,持久化与主从哨兵配置,附一次缓存雪崩的真实复盘。