Docker 实战——从入门到K8s前的最后一课
文章平均质量分 79
镜像1.2GB如何瘦身到120MB?容器日志爆了怎么轮转?Compose一键启动LNMP却连不上网?本专栏用8个生产事故,手把手教你Dockerfile优化、网络排障、数据持久化、多阶段构建。每章配可复现的Docker环境 + 命令序列,让你从“会跑容器”到“敢上生产”。不堆概念,只解决真实卡点。
余额抵扣
助学金抵扣
还需支付
¥9.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
sfishfly
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
第8章:从 Docker 到 K8s 的过渡——使用 kind/minikube 本地运行 K8s
Kubernetes 的核心概念(Pod、Deployment、Service、Ingress、ConfigMap、Secret)。使用 kind(Kubernetes in Docker)在本地快速搭建 K8s 集群。将 docker-compose 应用迁移到 K8s YAML 的完整流程。真实踩坑:本地 `minikube` 启动失败,因为 Docker 驱动冲突;`Ingress` 配置后访问返回 404,因为忘了加 `ingress-nginx-controller`;`Service` 类型用错原创 2026-06-15 11:12:02 · 22 阅读 · 0 评论 -
第7章:镜像仓库与 CI/CD 集成——私有 Harbor + GitHub Actions
搭建私有镜像仓库的两种方案(Docker Registry 和 Harbor)。Harbor 的企业级功能:权限管理、镜像复制、漏洞扫描。GitHub Actions 自动构建镜像并推送到私有仓库的完整流水线。镜像安全扫描与供应链攻击防范。真实案例:公司使用的公共镜像被植入挖矿程序,从此所有基础镜像必须从私有仓库拉取;还有一次 CI 流水线中 `latest` 标签覆盖导致生产环境拉取了未测试的版本。原创 2026-06-15 11:11:47 · 26 阅读 · 0 评论 -
第6章:容器日志与监控——用 ELK 或 Loki 收集容器日志
容器日志的 stdout/stderr 最佳实践。Docker 日志驱动的配置(json-file、fluentd、loki)。使用 ELK(Elasticsearch + Logstash + Kibana)集中收集日志的完整搭建流程。轻量级方案 Loki + Promtail + Grafana 的快速部署。真实案例:生产环境某容器疯狂输出日志,导致 `/var/lib/docker/containers` 磁盘写满,节点宕机,最后通过限制日志驱动和轮转策略解决。原创 2026-06-15 11:11:31 · 21 阅读 · 0 评论 -
第5章:生产级 Dockerfile 最佳实践——多阶段构建、非 root 用户、健康检查
多阶段构建的进阶用法(Java、Go、Node.js 实战)。为什么必须用非 root 用户运行容器,以及如何正确创建用户并处理权限。健康检查的三种方式(命令、TCP、HTTP)及其在生产环境中的配置。真实案例:一个 Python 推理镜像从 1.2GB 到 120MB 的完整演进过程,每一步都有对应的 docker build 和 docker history 分析。 > **配套资源**:多语言 Dockerfile 模板库(Java/Go/Node/Python)、健康检查测试脚本、`.docke原创 2026-06-15 11:11:20 · 24 阅读 · 0 评论 -
第4章:Docker Compose 多容器编排——一键启动 SpringBoot + MySQL + Redis + Nginx
`docker-compose.yml` 的核心语法(services、networks、volumes、depends_on、healthcheck)。如何编排一个完整的 Java 应用栈,包括 SpringBoot 应用、MySQL、Redis 和 Nginx 反向代理。使用 `.env` 文件管理环境变量,避免敏感信息泄露。真实踩坑:`depends_on` 只能控制启动顺序,不能等待服务就绪,导致 SpringBoot 启动时 MySQL 还没准备好,应用疯狂报错;还有一次忘记给 Compose 项原创 2026-06-15 11:11:10 · 25 阅读 · 0 评论 -
第3章:数据持久化——Volume vs Bind Mount
Volume(卷)和 Bind Mount(绑定挂载)的本质区别与适用场景。匿名卷、命名卷、主机挂载的三种形式。如何用 `docker run --volumes-from` 备份和恢复容器数据。生产环境如何管理数据库卷的权限和备份策略。 > **配套资源**:一个完整的 MySQL 数据备份/恢复脚本、自动清理旧卷的 cron 任务模板、`docker volume` 常用命令速查表。 > **真实踩坑**:我曾把 MySQL 容器跑了一个月,某天误删容器后,所有数据瞬间蒸发,因为没挂卷;还有一次原创 2026-06-15 11:10:59 · 118 阅读 · 0 评论 -
第2章:容器网络详解——bridge、host、none 与自定义网络
Docker 的四种网络模式(bridge、host、none、container)的原理与实战。如何用 `docker network` 创建自定义桥接网络,让容器之间通过容器名通信。容器间 `localhost` 不通的根本原因。真实踩坑:生产环境中误用 `host` 网络导致端口冲突,两个服务争抢 8080 端口,整个站点宕机 20 分钟。 > **配套资源**:一键搭建 LNMP 网络的完整脚本(三个容器:Nginx + PHP-FPM + MySQL)、网络调试工具 `nsenter` 和 `原创 2026-06-15 11:10:48 · 114 阅读 · 0 评论 -
第1章:镜像分层原理与Dockerfile优化——1.2GB 镜像如何瘦身到 120MB
Docker 镜像分层存储的底层原理(UnionFS、Overlay2)。为什么随便一个 `node:18` 镜像就 900MB?如何用多阶段构建、合并 RUN 命令、选用 Alpine 基础镜像等手段,把一个臃肿的 1.2GB 镜像压缩到 120MB。 > **配套资源**:一个“胖镜像”的 Dockerfile 原始版(可直接 build 出 1.2GB 的坏榜样)、优化过程中的每一步 `docker history` 对比脚本、`.dockerignore` 模板。 > **真实踩坑**:我曾原创 2026-06-15 11:10:36 · 139 阅读 · 0 评论
分享