我的容器化之路:从Docker到Kubernetes的踩坑经历

举报
i-WIFI 发表于 2025/11/08 19:20:23 2025/11/08
【摘要】 写在前面最近在重构公司的微服务架构,接触了不少容器技术。说实话,一路走来真的踩了不少坑,今天就和大家分享一下我在Docker和Kubernetes方面的经验心得。 初识Docker:简单粗暴的快乐刚开始接触Docker的时候,我还在那家小公司做后端开发。当时我们的部署方式还是老套的rpm包+脚本,某次更新服务把生产环境搞炸了,运维同事差点没把我杀了哈哈。那是我第一次在本地跑通的Docke...

写在前面

最近在重构公司的微服务架构,接触了不少容器技术。说实话,一路走来真的踩了不少坑,今天就和大家分享一下我在Docker和Kubernetes方面的经验心得。

初识Docker:简单粗暴的快乐

刚开始接触Docker的时候,我还在那家小公司做后端开发。当时我们的部署方式还是老套的rpm包+脚本,某次更新服务把生产环境搞炸了,运维同事差点没把我杀了哈哈。

那是我第一次在本地跑通的Docker服务:docker run -d -p 80:80 nginx。看着浏览器里成功显示的Welcome页面,心里真的是五味杂陈——原来部署可以这么简单!

我的第一个Dockerfile

写Dockerfile的过程还是比较顺利的,主要踩的坑就是layer缓存的问题。当时我写了个这样的Dockerfile:

FROM python:3.9
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["python", "app.py"]

看起来没毛病对吧?但实际构建的时候巨慢无比。 后来才知道应该把变化频率低的指令放在前面,比如先COPY代码再安装依赖就完全搞反了。

深入Container:概念理解

container和image的关系,我之前一直搞混。image就像是一个模板,container是运行时的实例。

打个不恰当的比方:image是汽车的设计图纸,container就是真正造出来的车。每张图纸可以造多辆车,每辆车都可以独立运行,互不影响。

Kubernetes:真正的挑战来了

从Docker Swarm转到K8s的时候,我感觉整个世界观都被颠覆了。那密密麻麻的yaml文件,pod、service、deployment的概念,差点把我搞崩溃。

我的第一个K8s部署文件

大概是三个月前,我写的第一个Deployment文件:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
spec:
  replicas: 3
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
      - name: my-app
        image: my-app:latest
        ports:
        - containerPort: 8080

这个文件现在看来还比较简单,但当时我搞了整整一天才让它跑起来。主要问题是我总是把replica的r写成replia…这种低级错误我都不好意思说。

实战经验分享

  1. 镜像体积优化:尽量用alpine版本的base image,之前用ubuntu的镜像动辄几百MB,后来换成alpine+多阶段构建,直接降到几十MB。

  2. 环境变量管理:生产环境一定不要直接在Dockerfile里硬编码配置,用configMap或者环境变量更安全。我有次把数据库密码直接写进Dockerfile,结果被安全团队拉去"喝茶"了…

  3. 日志收集:K8s环境下,容器重启日志就会丢失,建议尽早接入ELK或者Prometheus+Grafana。我现在用的是后者,监控告警做得比较完善。

  4. 资源限制:一定要设置requests和limits,不然Pod可能会把节点资源吃干抹净。血的教训啊,那次生产环境因为没设置limits,整个集群的节点都卡死了。

小结

容器技术确实是现代微服务的基石,虽然学习曲线陡峭,但掌握之后的好处是显而易见的。特别是K8s,复杂度确实高,但弹性伸缩、故障自愈这些特性对生产环境来说太重要了。

写这篇文章的时候,我也在回想这一路走来的点点滴滴。从最初的"万物皆可Docker"到现在的"不是所有应用都适合容器化",也算是一种成长吧。

大家如果在实践过程中有什么问题,欢迎在评论区交流讨论~


写于一个加班到深夜的周五,记录我与容器技术的故事

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。