在家办公时,很多人会用 Docker 跑服务,比如文档协作工具、内部项目管理平台。但你有没有遇到过电脑突然卡顿?浏览器标签都打不开,微信发个文件都转圈?问题可能就出在容器“吃”光了系统资源。
容器不是轻量级就等于不耗资源
很多人觉得容器启动快、占空间小,就可以随便开一堆。其实每个容器都在抢 CPU 和内存。尤其是跑数据库、Elasticsearch 这类服务,一不留神就把 4GB 内存的笔记本拖垮。我同事上周就因为本地开了三个测试容器,导致视频会议时麦克风断断续续,尴尬得关了摄像头躲了十分钟。
限制资源,让多个服务和平共处
Docker 其实早提供了资源限制功能。比如你想运行一个 GitLab 镜像,但不想它霸占全部内存,可以这样启动:
docker run -d --name gitlab \
--cpus=1.5 \
--memory=2g \
-p 8080:80 \
gitlab/gitlab-ce
这里 --cpus=1.5 表示最多使用 1.5 个 CPU 核心,--memory=2g 限制内存为 2GB。这样一来,即使 GitLab 负载升高,你的浏览器和 Zoom 还能正常运行。
用 Compose 文件统一管理更省心
如果你用 docker-compose.yml 管理多个服务,可以直接在文件里写限制:
version: '3.8'
services:
app:
image: my-web-app
deploy:
resources:
limits:
cpus: '0.8'
memory: 512M
db:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: example
deploy:
resources:
limits:
cpus: '1.0'
memory: 1G
这样每次 docker-compose up,资源配额自动生效。特别适合远程团队共享本地开发环境配置,避免有人“无意超标”拖慢整套服务。
监控才是日常使用的保障
光设限制还不够,得知道实际用了多少。Docker 自带的 docker stats 命令就像任务管理器,实时看各个容器的资源占用:
docker stats --no-stream
输出里能看到每个容器的 CPU 百分比、内存使用、网络流量。发现某个容器内存蹭蹭涨?可能是内存泄漏,也可能是限制设得太松。及时调整,别等电脑死机才察觉。
远程办公讲究效率和稳定,容器虽好,也不能放任自流。合理设置资源限制,相当于给每个服务划了“责任田”,谁也不多占,大家都能跑得顺。