2核2G云服务器上跑 Docker 的实践清单:内存、磁盘、防火墙与带宽

举报
yd_238266496 发表于 2026/10/28 23:01:00 2026/10/28
【摘要】 2核2G云服务器上跑 Docker 的实践清单小规格云服务器(2 核 2GiB、系统盘 40GiB、2Mbit/s 带宽)是很多个人开发者和小项目的起点。这类机器跑 Docker 完全够用,但内存、磁盘、带宽三个瓶颈必须先规划好。下面按「装 → 配 → 限 → 通 → 运维」的顺序整理一份可以直接照着做的清单。 1. 安装 Docker(以 Ubuntu 22.04 为例)sudo apt...

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. 端口放通:安全组 + 容器映射

云上一共有两道门:

  1. 控制台安全组放通入方向端口(例如 8080)
  2. 容器把端口映射到宿主机: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,关键不是「能不能跑」,而是:内存给上限、日志做轮转、防火墙想清楚、带宽别硬扛。这四件事提前做好,一台低配机器也能稳稳撑起几个小服务。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。