欢迎光临
我们一直在努力

别让你的docker镜像撑爆你的服务器

事情发生在一个风和日丽的周五下午。我打算把我写的\”下班倒计时服务\”部署到生产环境——它就干一件事:返回距离下班还有多少秒。简单、纯粹、毫无商业价值但每个打工人都需要。

kubectl apply 一气呵成,然后我盯着 Pod 状态等它变成 Running。

一分钟过去了。

两分钟过去了。

五分钟过去了,它还在 ContainerCreating。

我人麻了。一个返回数字的服务,启动比我周一早上起床还慢。

去节点上一查:docker images,好家伙,912MB。我的二进制文件本身才 7MB,剩下的 905MB 是什么?是 Go 编译器在里面度假吗?


案发现场:我的 Dockerfile

FROM golang:1.22

WORKDIR /app

COPY go.mod go.sum ./
RUN go mod download

COPY . .
RUN go build -o countdown .

EXPOSE 8080
CMD [\”./countdown\”]

看起来人畜无害对吧?每一行都写得规规矩矩。但问题就出在第一行——FROM golang:1.22。

这个镜像里有什么?完整的 Go 工具链(编译器、链接器、race detector)、一整个 Debian 系统(apt、bash、ls、cat、还有你这辈子都不会在容器里用的 500 个命令)、以及 Go module 下载缓存。

这些东西在编译的时候是你的战友,但在运行的时候,它们就是蹭吃蹭喝的房客——不交房租,还占你 900MB 硬盘。

更离谱的是,我的源码也被 COPY . . 整个拷进去了。也就

赞(0)
未经允许不得转载:171主机测评 » 别让你的docker镜像撑爆你的服务器
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址