18 10 月 2026

会了 Docker 基础命令后,最实用的玩法是把常用服务做成一套 compose 文件:博客、网盘、监控面板、数据库,一条命令全起来,换机器时一个目录拷走全恢复。这篇给出一套开箱即用的组合,覆盖个人服务器的常用服务。

本文基于 财富云计算 NAT 型云服务器(无独立公网 IP、价格比独立 IP 机型省一半以上)实践。前置基础见Docker 安装与基础命令,编排进阶见Docker Compose 编排实战。

一、这套组合是什么

服务镜像端口用途
AListxhofe/alist5244网盘文件列表,聚合各网盘
Uptime Kumalouislam/uptime-kuma3001服务监控,挂了通知你
Memosneosmemo/memos5230轻量笔记,速记想法
Watchtowercontainrrr/watchtower—自动更新容器镜像

四个服务加起来内存占用约 500M,跑在游戏服同机互不干扰——资源隔离与端口规划见一台服务器多功能规划。


二、一键 compose 文件

# /opt/services/docker-compose.yml
version: "3.8"

services:
  # 网盘文件列表
  alist:
    image: xhofe/alist:latest
    container_name: alist
    restart: unless-stopped
    ports:
      - "5244:5244"
    volumes:
      - ./alist/data:/opt/alist/data
    environment:
      - TZ=Asia/Shanghai
    mem_limit: 256m

  # 服务监控(游戏服挂了第一时间知道)
  uptime-kuma:
    image: louislam/uptime-kuma:latest
    container_name: uptime-kuma
    restart: unless-stopped
    ports:
      - "3001:3001"
    volumes:
      - ./kuma/data:/app/data
    mem_limit: 256m

  # 轻量笔记
  memos:
    image: neosmemo/memos:latest
    container_name: memos
    restart: unless-stopped
    ports:
      - "5230:5230"
    volumes:
      - ./memos:/var/opt/memos
    mem_limit: 128m

  # 自动更新所有容器镜像
  watchtower:
    image: containrrr/watchtower:latest
    container_name: watchtower
    restart: unless-stopped
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    environment:
      - TZ=Asia/Shanghai
      - WATCHTOWER_CLEANUP=true
      - WATCHTOWER_SCHEDULE=0 0 4 * * 1   # 每周一凌晨 4 点检查更新
    mem_limit: 64m

一条命令全起:

cd /opt/services
docker compose up -d
docker compose ps        # 看状态
docker compose logs -f   # 看日志

三、关键配置说明

内存限额(和游戏服共存的关键)

每个服务都设 mem_limit——这是 compose 和游戏服同机的安全绳:某个服务内存泄漏也不会拖垮游戏服。限额思路见Docker 安全加固与资源限制。

数据持久化

所有数据都落在 ./服务名/ 目录下,换机器时:

# 旧机器
cd /opt/services && docker compose down
tar -czf ~/services-backup.tar.gz .

# 新机器
解压 → 装 Docker → docker compose up -d
# 全部服务和数据原地复活

配合云服务器快照,迁移 = 恢复快照 + 起容器,十分钟。

自动更新的取舍

Watchtower 自动更新很方便,但游戏服容器不要交给它自动更新——游戏大更新要配套改配置,自动更新等于自动崩服。只让它管这些工具服务,游戏服手动更新。


四、NAT 型下的访问方式

这些服务都是 Web 界面,NAT 型映射 80/443 后用 Nginx 按域名分发:

# alist.yourdomain.com → 5244
server {
    server_name alist.yourdomain.com;
    location / {
        proxy_pass http://127.0.0.1:5244;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
    }
}

# kuma.yourdomain.com → 3001(建议加 Basic Auth 或 IP 白名单)
server {
    server_name kuma.yourdomain.com;
    location / {
        proxy_pass http://127.0.0.1:3001;
        proxy_set_header Host $host;
    }
}

反向代理配置见Nginx 反向代理与多站点,端口映射前提见NAT 端口映射完全指南。管理类服务(Kuma)务必加访问控制,见服务器端口安全。


五、安全四件套(容器化也要装)

  1. 容器不映射管理端口到公网:Kuma、数据库这类只走 Nginx 反代 + 访问控制。
  2. 镜像来源可信:只用官方/知名社区镜像,别用来路不明的镜像(镜像里可以藏挖矿程序,见开源程序部署安全检查)。
  3. Docker socket 不给普通容器挂:Watchtower 挂 socket 是必要特权,其他服务一律不挂。
  4. 定期清理:
# 清理悬空镜像和停止的容器(磁盘救星)
docker system prune -f
# 大扫除(含未使用数据卷,慎用——会删没用上的卷)
docker system prune -f --volumes

六、扩展:往这套里加什么

需求加什么
自己的博客Typecho 容器(Typecho 搭建)
数据库MySQL/PostgreSQL 容器(SQLite 与 MySQL 怎么选先想清楚)
游戏服用容器跑也行(Docker 部署游戏服务器),但注意性能和存档位置
密码管理Vaultwarden(Bitwarden 自建)
RSS 阅读FreshRSS

加服务前先查内存:docker stats 看当前占用,新服务的 mem_limit 预留好。2G 机器加三个服务就是上限,别贪多。


七、常见疑问

Q:游戏服放容器里好还是 systemd 好?
更新频繁、要交互配置的游戏服建议 systemd(直接、好调试);追求环境隔离和多服管理可以容器化。两种都可以,见Docker 部署游戏服务器。

Q:compose 文件和 systemd 服务冲突吗?
不冲突。常见组合:游戏服用 systemd(吃内存大户),工具服务用 compose(小服务集群),一台机器两种管理方式各管各的。

Q:Watchtower 更新失败怎么办?
看 docker compose logs watchtower。常见原因是镜像拉取失败(网络)或端口冲突,回滚到上个版本:docker compose down && docker compose up -d(用旧本地镜像)。


结语

Docker 一键部署的精髓是「目录即服务」:一个 compose 文件 + 一个数据目录,定义了你机器上的全部工具服务。换机器、重装系统、迁移机房,都是「拷目录 + up -d」的十分钟操作。对同时跑着游戏服的机器,这套组合用 500M 内存换来网盘、监控、笔记三个常用服务——性价比极高。

容器化深入:Docker 数据卷与网络详解、Dockerfile 编写与镜像优化、Docker 常见故障排查。

财富云计算 专注 NAT 型云服务器,无独立公网 IP、价格比独立 IP 机型省一半以上,游戏服 + 工具服务同机共存的资源规划与端口方案见一台服务器多功能规划。

延伸阅读
  1. 网站环境怎么选:LNMP 手动 / 宝塔面板 / Docker / 云开发
  2. 问卷表单系统搭建:SurveyKing / Formbricks,数据自己收
  3. 图床搭建:Lsky Pro / Lychee,自托管图片托管方案
  4. 邮件列表搭建:listmonk 自托管 Newsletter,把读者握在自己手里
  5. 文档站点搭建:MkDocs / VuePress / Docsify,产品文档与技术手册方案
  6. RSS 阅读器搭建:FreshRSS 自托管,把信息流拿回自己手里
  7. 短链接服务搭建:Shlink 自托管,链接数据自己掌握
  8. 网站状态监控页搭建:Uptime Kuma,服务器挂了第一时间知道
更多阅读
  1. 上一篇:小项目用什么数据库:SQLite 与 MySQL 怎么选
  2. 下一篇:致命公司 Lethal Company 开服教程(Linux 版):4 人恐怖捡垃圾长期服
发表评论 2