结论先行:1核1G服务器运行Docker时,内存占用通常在300MB-700MB之间,实际占用取决于容器数量和运行的服务类型,需预留至少200MB内存给系统进程以避免崩溃。
内存占用核心因素
基础开销:
Docker守护进程(dockerd)默认占用100-150MB内存,容器运行时(containerd)约50-100MB。单空容器启动后,总内存占用约200-250MB。服务类型影响:
- 轻量服务(如Nginx/Alpine):单个容器占用10-50MB;
- 中等服务(如Redis/MySQL):占用100-300MB,需调优配置(如
--memory限制); - JVM应用:因堆内存默认设置,可能直接耗尽剩余资源,需强制指定
-Xmx参数。
关键优化建议
- 系统预留:1G内存中至少保留200MB给OS内核及其他进程;
- 容器限制:通过
docker run --memory=300m强制限制单容器内存; - 轻量化选择:优先使用Alpine镜像,减少30%-50%内存开销。
典型场景示例
运行1个Nginx容器+1个Redis容器时:
- Nginx:50MB
- Redis:150MB(默认配置)
- Docker引擎:200MB
- 总占用:约400MB,剩余内存可支撑突发流量或临时进程。
⚠️ 注意:若运行Java应用,建议升级至2G内存或严格限制堆内存,否则易触发OOM(Out of Memory)终止。
CCLOUD博客