2核2G云服务器上跑 Docker 的实践清单:内存、磁盘、防火墙与带宽
2核2G云服务器上跑 Docker 的实践清单
小规格云服务器(2 核 2GiB、系统盘 40GiB、2Mbit/s 带宽)是很多个人开发者和小项目的起点。这类机器跑 Docker 完全够用,但内存、磁盘、带宽三个瓶颈必须先规划好。下面按「装 → 配 → 限 → 通 → 运维」的顺序整理一份可以直接照着做的清单。
1. 安装 Docker(以 Ubuntu 22.04 为例)
sudo apt update
sudo apt install -y docker.io
sudo systemctl enable --now docker
docker version
不想每次都敲 sudo:sudo usermod -aG docker $USER,重新登录生效。
2. 配置镜像加速与日志轮转
国内拉取官方镜像容易超时,可在 /etc/docker/daemon.json 中配置镜像加速地址(具体地址以各镜像服务商当前公告为准):
{
"registry-mirrors": ["https://<your-mirror-host>"],
"log-driver": "json-file",
"log-opts": { "max-size": "10m", "max-file": "3" }
}
sudo systemctl daemon-reload && sudo systemctl restart docker
顺手把日志轮转配上很重要:默认 json-file 驱动不限制大小,长期运行会把 40GiB 的系统盘写满。
3. 2GiB 内存怎么分配
不加限制时,一个 JVM 或 Node 应用很容易把 2GiB 吃满并触发 OOM。建议三步:
- 容器加硬限制:
docker run --memory=512m --memory-swap=768m ... - 宿主机补一块 swap(此处以 2GiB 为例):
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
- 基础镜像优先选
alpine或-slim变体
4. 磁盘:定期清理
docker system df # 先看占用构成
docker image prune -a # 清理未使用镜像
docker system prune -af # 连已停止容器、无用网络一起清
5. 端口放通:安全组 + 容器映射
云上一共有两道门:
- 控制台安全组放通入方向端口(例如 8080)
- 容器把端口映射到宿主机:
docker run -d -p 8080:80 nginx
这里有个常见坑:Docker 会在 iptables 的 DOCKER 链里插入 DNAT 规则,绕过 ufw 的默认策略,于是出现「ufw 明明关了端口,容器却还能被访问」的现象。想让主机防火墙生效,可以在 DOCKER-USER 链里加规则,或者让容器只监听回环地址,由反向代理对外:
docker run -d -p 127.0.0.1:8080:80 nginx
6. 带宽只有 2Mbit/s 时
2Mbit/s 的理论峰值约 256KB/s,出网流量通常还有每月流量包额度,超出部分按流量计费。实践建议:
- 静态资源放对象存储 + CDN,别让云服务器直接吐大文件
- 镜像和依赖尽量在本地构建好再推送,避免在服务器上反复下载依赖
- 关注流量包余量,超出是按量计费
7. 日常运维命令
docker ps -a # 容器状态
docker logs -f --tail=200 <c> # 追日志
docker stats --no-stream # 资源占用
docker exec -it <c> sh # 进容器
多容器建议直接用 compose:
services:
web:
image: nginx:alpine
ports: ["8080:80"]
volumes: ["./html:/usr/share/nginx/html:ro"]
restart: unless-stopped
mem_limit: 256m
8. 几件和钱有关的事
- 到期时间与自动续费:实例概览里可以看到到期时间,自动续费默认关闭,长期跑的服务建议开启或加日历提醒
- 续费姿势:月付和年付价差明显,年付单价通常更低;如果手里有代金券,注意多数券「不可与促销折扣同享」,下单前比一下「特价」与「原价减券」哪个更划算
- 快照/备份:动手折腾前先给系统盘打快照
小结
2 核 2G 的小机器跑 Docker,关键不是「能不能跑」,而是:内存给上限、日志做轮转、防火墙想清楚、带宽别硬扛。这四件事提前做好,一台低配机器也能稳稳撑起几个小服务。
- 点赞
- 收藏
- 关注作者
评论(0)