Docker 部署 VPS 怎么选?
Docker 让部署变得简单,但选对 VPS 配置才能让容器跑得稳。内存、硬盘、CPU 怎么搭配?看这篇就够了。
Docker 部署需要什么配置?
Docker 本身很轻量,但你跑在 Docker 里的应用才是真正的资源消耗者。以下是不同场景的推荐配置:
轻量(1-2 个容器)
- 1 vCPU
- 1 GB 内存(偏紧)
- 20 GB SSD
- 适合:单个应用 + Nginx 反向代理
- 示例:个人博客、Telegram Bot
标准(3-5 个容器)
- 2 vCPU
- 2 GB 内存
- 40 GB SSD
- 适合:应用 + 数据库 + 缓存 + 反向代理
- 示例:WordPress + MySQL + Redis + Nginx
多服务(5+ 个容器)
- 2-4 vCPU
- 4 GB 内存
- 60+ GB SSD
- 适合:多个独立应用 + 各自数据库
- 示例:n8n + Plausible + Uptime Kuma + 博客
内存(RAM)—— Docker 的命脉
Docker 本身占用内存很少(几十 MB),但每个容器里的应用会占用各自的内存。常见容器的典型内存占用:
- Nginx / Caddy:20-50 MB(非常轻量)
- MySQL / MariaDB:200-500 MB(取决于数据量和配置)
- PostgreSQL:100-300 MB
- Redis:10-100 MB(取决于数据量)
- Node.js 应用:50-200 MB(取决于应用复杂度)
- Python 应用:50-300 MB
- Java 应用:300 MB - 1 GB+(Java 是内存大户)
把这些加起来,再加上操作系统本身的 200-300 MB,就是你的最低内存需求。建议预留 20-30% 的余量,避免高峰期 OOM。
硬盘(存储)—— 镜像 + 数据
Docker 的存储需求分两块:
- 镜像存储:每个 Docker 镜像通常 50 MB - 1 GB。Alpine 基础镜像最小(~5 MB),Ubuntu 基础镜像较大(~70 MB),包含完整运行环境的镜像(如 n8n)可能 300 MB - 1 GB。
- 容器数据:数据库文件、日志、用户上传文件、应用生成的数据。这些是持续增长的。
强烈建议选 SSD(NVMe 更好)。Docker 的镜像拉取、容器启动、数据库读写都依赖磁盘 IO。HDD 会让 Docker 操作明显变慢。
20 GB SSD
适合 1-2 个轻量容器,数据量小。需要定期清理无用镜像。
40 GB SSD
适合 3-5 个容器 + 小数据库。有余量,不用担心短期爆满。
60-80 GB SSD
适合多服务部署,有日志和数据增长空间。推荐这个级别。
100 GB+
适合数据库密集型、文件存储、或者需要长期保留大量日志。
CPU —— 多容器需要多核
单个容器跑轻量应用,1 vCPU 足够。但多个容器同时运行,特别是数据库和 Web 应用都在处理请求时,2 vCPU 能明显减少等待时间。
- 1 vCPU:1-3 个轻量容器
- 2 vCPU:3-6 个容器,包含数据库
- 4 vCPU:6+ 个容器,或者有 CPU 密集型任务(如视频转码、AI 推理)
大多数个人和小团队用 2 vCPU 就足够。如果容器经常 CPU 100%,用 docker stats 检查是哪个容器在吃资源。
操作系统选择
Docker 在 Linux 上原生运行,推荐:
- Ubuntu Server LTS(20.04 / 22.04 / 24.04):最主流,Docker 官方支持最好,社区资料最多。新手首选。
- Debian:比 Ubuntu 更轻量稳定,适合熟悉 Linux 的用户。
- Alpine Linux:极致轻量,内存占用极低。但 musl libc 兼容性偶尔有问题。
- 不推荐 CentOS:CentOS 已停止维护,用 Rocky Linux 或 AlmaLinux 替代。
大多数 VPS 商家在创建时可以选择系统模板,选 Ubuntu 22.04 LTS 最省心。
Docker Compose —— 管理多容器的标准方式
手动 docker run 一个个启动容器很痛苦。docker-compose 用一个 YAML 文件管理所有服务:
- 在 VPS 上安装 Docker 和 Docker Compose(Docker 官方一键脚本)
- 创建
docker-compose.yml,定义所有服务、端口、数据卷、网络 docker compose up -d一键启动所有服务docker compose down一键停止docker compose pull && docker compose up -d更新镜像并重启
sudo apt update && sudo apt install -y docker.io docker-compose-v2 && sudo systemctl enable --now docker 把 docker-compose.yml 放在 Git 仓库里,换 VPS 时 git clone 然后 docker compose up -d 就迁移完成,极其方便。
Swap —— 低内存 VPS 的救命稻草
如果你的 VPS 只有 1GB 内存,强烈建议配置 swap:
- 1GB swap:给内存不足时做缓冲,防止 OOM Killer 直接杀掉进程
- 不是内存替代品:swap 速度远慢于 RAM,频繁 swap 会导致系统卡顿
- 配置命令:
fallocate -l 1G /swapfile && chmod 600 /swapfile && mkswap /swapfile && swapon /swapfile
有 swap 的 1GB VPS 比没有 swap 的 1GB VPS 稳定性高很多。但最终解决方案还是升级内存。
磁盘空间监控 —— 别等满了才发现
Docker 会悄悄积累大量数据:
- 未使用的镜像:每次 pull 新版本,旧版本还在。用
docker image prune -a清理 - 停止的容器:
docker container prune清理 - 未使用的数据卷:
docker volume prune清理 - 一键清理:
docker system prune -a --volumes(谨慎使用,会删除未使用的数据卷) - 日志膨胀:在 docker-compose.yml 中配置日志轮转(max-size、max-file)
建议设置 cron 定时任务,每周自动清理一次,或者配置日志轮转防止日志撑爆硬盘。
推荐套餐
在 VPS 上用 Docker 的优缺点
✅ 优点
- 环境一致性好 —— 开发、测试、生产环境完全相同
- 部署简单 —— docker-compose up 一条命令启动所有服务
- 迁移方便 —— 把 compose 文件和 volume 数据搬走就行
- 资源隔离 —— 每个容器独立运行,互不干扰
- 生态丰富 —— Docker Hub 上有海量现成镜像
⚠️ 注意
- 有学习曲线 —— Docker 概念(镜像、容器、卷、网络)需要时间理解
- 额外资源开销 —— Docker 本身有基础内存和 CPU 开销
- 磁盘管理需要关注 —— 镜像和日志会悄悄占满硬盘
- 网络配置有时复杂 —— 容器间通信、端口映射需要规划
- 不适合所有场景 —— 极简部署用 apt install 可能更直接