前言
Docker 部署的好处,用过的人都回不去:应用连同运行环境打包成一个容器,一条命令拉起服务;容器之间互相隔离,一个应用出事不连累别的;以后换机器迁移,数据卷一背就走。所以从博客、面板到监控,大家越来越喜欢用 Docker 部署。但是很多人不知道自己项目的docker需求,盲目地追逐促销,拍下机器,回来再装服务,结果跑不了几个容器,内存就见红了 (´・ω・`)
那么一台 VPS 到底能塞多少东西呢?本文就带大家一步一步的计算这么一笔账——容器数量、内存、端口、磁盘,最后落实到"该买多大配置的VPS"上。
第一步:把要跑的容器列出来
算账的原料是清单。拿张纸或者开个文档,把计划部署的服务一项项列出来——很多人高估或低估配置,根源就是根本没数过自己要跑什么。
给一份常见容器的内存占用参考:
注意:数据量和并发上去之后这些数据会涨,最终以自己的实测为准——怎么实测,下一步就讲。
第二步:上测试机实测
清单上的数据只能算初稿,想把账算准,最好的办法是找一台测试机把服务都跑起来,亲手量一遍。本地闲置电脑、按小时计费的云主机(测完销毁,花不了几毛钱)都行,重点是环境别心疼、数据敢造。
实测主要看三个维度,工具都是 Docker 自带的:
查看内存和 CPU占用:docker stats
docker stats --no-stream 这条命令给所有容器拍一张快照,MEM USAGE 列就是每个容器的真实内存占用,CPU % 列看处理器压力。去掉 --no-stream 则是实时滚动的监控面板。
单看空载数字不够,峰值才是算账要用的数:给博客用 curl 模拟一波并发访问、让数据库跑一次备份,再看 docker stats 的读数,空载和峰值的差值往往出乎意料。把每个容器的空载值和峰值都记到清单右边,这张清单就从"经验参考"变成了"你的真实账单"。
磁盘:docker system df
docker system df -v 一眼看清镜像、容器、数据卷各吃了多少磁盘,-v 还能列出明细。部署一段时间后再跑一次,对比着看就知道自己的镜像和数据是在正常生长还是失控膨胀。
宿主机整体:free -h
free -h 看整机内存的去向。用它扣掉系统本身的占用,剩下的才是能给容器花的——这个数,比任何攻略里的通用建议都可靠。
另外两个实测时容易漏的小项:一是日志,容器日志会悄悄吃磁盘,实测期间顺手检查日志体积,给容器配好日志上限;二是备份,数据库容器的备份过程会产生峰值占用,备份一次看一眼读数,把这部分余量也算进账。
实测完把数字填回清单,下一步就能算总账了。
第三步:算内存总账
内存是容器部署里最先撞墙的资源,算法很简单:
各容器内存相加 × 1.5 = 你需要的内存规模。(相加时用第二步的实测峰值,没实测条件的先用清单经验值。)
为什么要乘 1.5?两个原因:
宿主机系统本身要吃几百 MB,不算它就是自欺欺人;
容器有内存峰值——博客被爬虫扫一波、数据库跑一次备份,内存瞬间上冲,不留余量的话 OOM 杀手会直接帮你停服务。
举个实际的例子。假设计划部署:Nginx 反代(0.1GB)+ Halo 博客(0.8GB)+ MySQL(0.6GB)+ 监控(0.1GB):
结论就出来了:2G 内存日常会紧巴巴,4G 从容,还能容纳以后临时加容器的手痒。两档差价通常不大,建议直接上大的。
顺带说一句 swap:它只是防崩的缓冲垫,不是内存的替代品。真拿 swap 扛日常负载,磁盘 IO 会被拖得很惨,机器卡成幻灯片。算账时别把 swap 算进内存里。
第四步:算端口账
端口不占内存,但规划不做在前面,后面会改到怀疑人生。
推荐的结构:80/443 只留给一个反向代理容器,其他所有容器的端口只映射到本机(127.0.0.1),对外统一由反代按域名分发。
这样规划的好处:
一台机器跑几十个容器,对外暴露的永远只有 80 和 443,安全面最小;
新加服务不用动防火墙,改反代一处配置就完事;
换域名、上 HTTPS 也只在反代层操作。
反面教材是端口随手映射:今天占一个 8080,明天占一个 8443,防火墙开了一串口,哪天想理清楚谁在用哪个端口,能理到半夜。
第五步:CPU 和磁盘顺带定
CPU:普通自部署服务(博客、面板、监控)要求不高,1~2 核足够。真正吃 CPU 的是编译、转码、爬虫这类活,有明确需求再往上加,不必预防性堆核。
磁盘:这块最容易被忽略。Docker 镜像叠起来很快,几个大镜像 + 数据库数据卷 + 日志,20GB 系统盘一年就紧张。建议按"预估数据量 × 3"来定;数据库容器多的,优先选 NVMe 盘——IO 对数据库性能的影响比容量更直接。
总结
整套算账流程五步:列容器清单 → 测试机实测校准 → 内存相加 × 1.5 → 端口统一走反代 → 磁盘按三倍预留。
对应到 VPS,两个典型档位:
轻量自用(反代+博客+监控):2 核 2G 起步,4G 从容;
容器多或有独立数据库:4 核 4G 是更踏实的起点。