知易通
第二套高阶模板 · 更大气的阅读体验

Docker镜像CPU内存配额设置小技巧

发布时间:2026-01-05 02:50:36 阅读:71 次

家里那台旧电脑装了ref="/tag/2019/" style="color:#EB6E00;font-weight:bold;">Docker跑几个服务,结果一开容器系统就卡得不行。后来才发现,默认情况下容器会用尽主机的所有CPU和内存资源,根本不讲武德。尤其是同时跑Nginx、MySQL和Node.js应用时,谁都不让着谁,最后全家一起慢。

限制内存很简单

比如你只想给一个镜像分配512MB内存,启动时加个参数就行:

docker run -d --memory=512m my-web-app

这样就算程序内存泄漏,也不会把整台机器拖垮。我之前跑了个爬虫容器,没设限制,结果吃掉3GB内存,家里的NAS直接假死,远程都连不上。

CPU也能按比例分

CPU配额用的是相对权重。比如有两个容器,一个设为1024,一个设为512,在资源紧张时前者能拿到两倍的CPU时间。

限制具体核数也可以。想让容器最多只用一个CPU核心:

docker run -d --cpus=1.0 my-api-service

要是家里是四核处理器,还可以精确到小数点。比如给媒体转码容器分2.5个核,留点余量给日常使用:

docker run -d --cpus=2.5 video-converter

组合使用更安心

实际部署时通常两个参数一起上。比如家里的博客容器,既不想它占太多内存,也不能让它抢光CPU:

docker run -d --memory=300m --cpus=0.6 blog-container

这样即使后台在备份数据库,前台网页照样能流畅打开。调试阶段可以先不设限,观察资源占用情况后再调整,别一上来就卡太死。

现在我家那台老机器同时跑五六个服务也不慌,每个容器各安其位,就像厨房里锅碗瓢盆各有位置,互不打架。