Docker容器化指南
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/self-ent-tech-docker-container。
技能介绍
要解决的问题
把一个本地能跑的应用搬进容器,第一步往往不是写 Dockerfile。真正卡人的是:依赖清单没整理干净、构建产物和运行环境混在一起导致镜像臃肿、多个服务之间的网络与存储没人设计、上线前没人过一遍安全配置。这些坑分散在不同文档里,工程师要么凭经验硬写,要么反复试错。
技能如何工作
这个技能以容器化工程师的角色运作,触发条件是「容器化应用」「优化镜像」「Compose 编排」三类需求。执行流程是固定的五步:
- 分析依赖与运行环境:先确认语言运行时、依赖安装方式、是否需要构建工具链,再决定基础镜像。
- 编写多阶段 Dockerfile:构建阶段只装依赖和编译,运行阶段只保留产物,中间层不进最终镜像。
- 配置
docker-compose.yml:把服务、端口映射、卷挂载和网络关系写成一份可复现的声明。 - 设计网络与存储卷策略:区分哪些数据需要持久化、哪些只是临时状态。
- 镜像安全扫描与瘦身:清理缓存、剔除调试工具、核对非 root 运行。
过程中每推进两到三步会停下来确认理解,并抛出「试试写一段…」式的动手任务,把阅读变成实践。
适用边界与注意点
- 它输出的是结构化流程和模板,不是现成的镜像仓库,具体参数仍要按你的运行时版本调整。
- 默认约束包括不用
latest标签、非 root 用户运行,这意味着产出可能和你现有的单阶段构建习惯不同,需要重新验证。 - 多阶段构建对编译型语言收益明显;纯解释型应用收益有限,不必为了「规范」引入额外复杂度。
- 安全扫描这一步给出的是方向性建议,不替代
trivy这类独立扫描工具的结果。
使用场景
- 本地 Python 服务依赖已写进 requirements.txt,需要生成多阶段构建的 Dockerfile,把构建环境和运行时分开
- 前后端联调时依赖多个容器,要写 docker-compose.yml 统一声明端口、网络和数据卷,让环境一键拉起
- 现有镜像包含编译工具和缓存,体积过大且以 root 运行,需要按最佳实践扫描并瘦身
- CI 流水线要跑容器化集成测试,需要一份不含 latest 标签、以非 root 用户启动的标准化构建方案
适合人员
- 需要把单体应用拆成容器服务的后端工程师,希望少踩构建与运行环境混用的坑
- 负责 CI/CD 的 DevOps,需要在流水线中输出可复现、可扫描的镜像构建方案
- 独立开发者,一个人维护多个服务,想通过 Compose 统一管理端口、网络和存储
- 为学生讲容器课的老师,需要一套分步带练和动手挑战来组织实验