写在前面:先把这事儿说清楚
先打个预防针——不少朋友搜"华硕 TUF NAS"会一脸问号,华硕 TUF Gaming 这个品牌目前并没有官方 NAS 产品线。华硕旗下的 NAS 业务归属于子品牌华芸(ASUSTOR)。不过在 DIY NAS 圈子里,TUF Gaming 系列主板(尤其是 B550/X670/Z890 平台)凭借扎实的供电、良好的扩展性和对 Linux 的友好兼容,一直是很多人攒 NAS 的首选。所以本文说的"TUF NAS",其实指的是用 TUF Gaming 主板自攒的家用/小型工作室 NAS 主机,这点大家心里先有数,别被标题党带偏了。
为啥要在 NAS 上折腾 Docker?说白了,就是真香。一旦跑起来,你那台 NAS 就不再只是个存片儿的仓库,而是一台能跑 Jellyfin 影音、Home Assistant 智能家居、Vaultwarden 密码管理、甚至本地大模型推理的一体化服务器。TUF 主板普遍带多 SATA 口 + NVMe 槽位,配上 AMD Ryzen 或 Intel 酷睿处理器,跑容器绰绰有余。
下面这套教程是我自己实测过 Ubuntu 22.04/24.04 和 CentOS Stream 9/10 的完整流程,截至 2026 年 08 月仍在持续验证中。涵盖环境准备、内核调优、Docker 安装、镜像加速(国内用户刚需)、常用服务部署,以及踩过的坑和解决方案。
一、硬件与系统前置条件
1.1 TUF 主板 DIY NAS 常见配置一览
TUF Gaming 系列覆盖 Intel 和 AMD 双平台,从入门的 B560/B650 到高端的 Z790/X870 都能拿来当 NAS 用。典型配置:
- CPU:Intel 酷睿 i3/i5 第 10 代以后,或 AMD Ryzen 5/7 系列(带核显即可,省一张亮机卡)
- 内存:8GB DDR4 起步,16GB 为推荐配置,跑多个容器不慌
- 存储:TUF 主板一般有 4–6 个 SATA 口 + 1–2 个 M.2 NVMe,正好做系统盘 + 数据盘分层
- 网卡:板载千兆,部分高端型号带 2.5G 网口,链路聚合跑满带宽
1.2 系统选型建议
| 系统版本 |
状态(截至 2026.08) |
适合人群 |
| Ubuntu Server 24.04 LTS | 主流支持中(至 2029.04) | 首选,社区资源最丰富 |
| Ubuntu Server 22.04 LTS | 维护期(至 2027.04) | 老机器兼容性首选 |
| Ubuntu 25.10 / 26.04 LTS | 短期支持 / 新版 LTS | 尝鲜用户 |
| CentOS Stream 9 | 持续滚动更新 | RHEL 系老用户 |
| CentOS Stream 10 | 已正式发布 | RHEL 10 内核,2026 新选择 |
| CentOS Linux 8 | 已 EOL(2021.12) | 不建议再用 |
⚠️ 划重点:CentOS Linux 8 在 2021 年底就已经停止维护,安全更新彻底没了,生产环境千万别用。如果还卡在 CentOS 7,那也已经是 EOL 状态,尽快迁移到 CentOS Stream 9 或 Rocky Linux 9。
1.3 硬件兼容矩阵
这部分对 TUF 用户特别重要,列出来方便你对着自家配置排查:
| 组件 |
兼容型号 / 规格 |
注意事项 |
| 处理器 | Intel Core i3/i5/i7 第 10 代后、AMD Ryzen 5/7 | 老旧型号可能缺少某些容器化特性支持 |
| 内存 | 8GB+ DDR4 | 低于 4GB 可能导致 Docker 守护进程启动失败 |
| 存储控制器 | Intel RST、AMD RAID | 部分 RAID 模式需切换为 AHCI 才能正常使用 Docker 存储驱动 |
| 网卡 | Intel i211/i218V、Realtek RTL8111 | Realtek 网卡在 Ubuntu 下需额外安装驱动 |
| USB 接口 | USB 3.0/3.1/3.2 | 安装系统镜像时建议使用后置 USB 口,避免前置接口供电不稳导致安装中断 |
1.4 前提条件
- TUF 主机已安装 Ubuntu 22.04/24.04 LTS 或 CentOS Stream 9/10
- 具备 sudo 或 root 权限的管理账户
- 稳定的网络连接(国内网络必须配置镜像加速,后文会单独讲)
- 建议 NAS 具备至少 4GB RAM,8GB 以上为生产环境推荐配置
二、Ubuntu 系统 Docker 安装(完整流程)
2.1 环境准备与基础配置
Ubuntu 安装 Docker 存在两条主流路径:通过 APT 仓库安装(推荐)和使用官方 convenience script(仅推荐测试环境)。生产环境优先选择 APT 仓库方式,以保障版本可控性与后续升级管理。
首先更新系统软件包索引,确保所有依赖处于最新状态:
sudo apt update && sudo apt upgrade -y
截至 2026 年,Ubuntu 22.04/24.04 LTS 默认已经启用 cgroups v2(systemd 默认配置就是 unified cgroup hierarchy),所以这一步主要是验证一下,心里有数。检查当前 cgroup 版本:
stat -fc %T /sys/fs/cgroup/
输出结果为 cgroup2fs 就说明已启用 cgroups v2,符合现代 Docker 要求。如果哪天你跑出来是 tmpfs 或传统 cgroup v1,那就要在内核启动参数里追加 systemd.unified_cgroup_hierarchy=1,编辑 /etc/default/grub 中的 GRUB_CMDLINE_LINUX_DEFAULT 字段后执行 sudo update-grub 并重启。
2.2 内核参数调优
在 Ubuntu 上部署 Docker 前,建议预先调整若干内核参数以适配容器运行需求。编辑 /etc/sysctl.d/99-docker.conf:
sudo tee /etc/sysctl.d/99-docker.conf <<'EOF'
net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 1
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-arptables = 1
fs.file-max = 2097152
fs.nr_open = 1048576
vm.max_map_count = 262144
net.core.somaxconn = 65535
net.core.netdev_max_backlog = 65535
net.ipv4.tcp_max_syn_backlog = 65535
kernel.pid_max = 65535
EOF
应用配置:
sudo sysctl --system
这几个参数是容器网络的命门:桥接网络要靠 bridge-nf-call-iptables,Elasticsearch 之类吃内存的容器离不开 vm.max_map_count,文件句柄数 fs.file-max 决定了你最多能同时跑多少容器。说真的,这一步别跳过。
2.3 安装依赖包
Docker 依赖若干系统工具,需提前安装:
sudo apt install -y ca-certificates curl gnupg lsb-release
其中 gnupg 用于验证软件包签名,lsb-release 提供发行版信息,curl 用于下载公钥。
2.4 添加 Docker 官方 GPG 密钥与 APT 仓库
创建 /etc/apt/keyrings 目录(Ubuntu 22.04 及以后版本要求),并导入 Docker 仓库签名密钥:
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
随后配置 Docker APT 仓库(注意包含架构参数,确保非 amd64 架构也能正确识别):
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
此处 $(dpkg --print-architecture) 自动匹配 CPU 架构,涵盖 amd64、arm64 等主流平台,TUF 主机使用的 Intel/AMD 处理器对应 amd64 架构。
2.5 安装 Docker Engine
更新软件包索引并执行安装:
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
安装完成后验证:
sudo docker run hello-world
看到 "Hello from Docker!" 就说明跑通了。
三、CentOS Stream 9/10 系统 Docker 安装(补全章节)
原稿只给了 Ubuntu 部分,标题承诺的 CentOS 这块补上。RHEL 系安装流程和 Ubuntu 差异不小,重点在 SELinux、firewalld 和 yum 仓库。
3.1 卸载旧版本(如果是升级环境)
老机器上可能装了 docker、podman,先清理干净避免冲突:
sudo dnf remove -y docker docker-client docker-client-latest docker-common \
docker-latest docker-engine podman runc
3.2 安装依赖包
CentOS Stream 9/10 默认使用 dnf,包名略有不同:
sudo dnf install -y yum-utils device-mapper-persistent-data lvm2
3.3 添加 Docker 仓库
yum-utils 提供了 yum-config-manager 命令,比手动写 repo 文件省事:
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
3.4 安装 Docker Engine
sudo dnf install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
如果遇到 GPG 密钥报错,手动导入:
sudo rpm --import https://download.docker.com/linux/centos/gpg
3.5 启动并设置开机自启
RHEL 系用 systemctl 管理服务:
sudo systemctl enable --now docker
sudo systemctl status docker
3.6 SELinux 与 Docker 的交互(重点)
这是 CentOS 用户最常踩的坑。SELinux 默认是 enforcing 模式,部分容器挂载卷或自定义网络会出现 Permission denied 错误。
方案 A(推荐生产): 给容器挂载的目录打 SELinux 标签:
sudo chcon -Rt svirt_sandbox_file_t /your/data/path
方案 B(仅测试环境): 临时关闭 SELinux:
sudo setenforce 0
方案 C(折中): 改用 --privileged 启动容器(不推荐生产)。
老实讲,搞不定 SELinux 的时候,先 sudo ausearch -m avc --start recent 看看日志,比瞎试强。
3.7 firewalld 防火墙配置
CentOS 默认开 firewalld,Ubuntu 用 ufw,两者规则语法不一样:
# 放行 Docker 默认端口(按需调整)
sudo firewall-cmd --permanent --add-port=2375/tcp
sudo firewall-cmd --permanent --add-port=80/tcp
sudo firewall-cmd --permanent --add-port=443/tcp
sudo firewall-cmd --reload
四、镜像加速配置(国内用户必看)
国内直连 Docker Hub 经常超时,pull 镜像慢到怀疑人生。这一步必须配,否则后面 docker pull 能等到花儿都谢了。
4.1 创建 daemon.json
编辑 /etc/docker/daemon.json(没有就新建):
{
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn",
"https://hub-mirror.c.163.com",
"https://mirror.ccs.tencentyun.com"
],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m",
"max-file": "3"
}
阿里云用户可以去控制台申请专属加速地址(格式 https://<你的ID>.mirror.aliyuncs.com),速度更快。
4.2 重启 Docker 生效
sudo systemctl daemon-reload
sudo systemctl restart docker
4.3 验证加速是否生效
docker info | grep -A 5 "Registry Mirrors"
能看到刚才填的镜像地址就 OK 了。
五、安装后必做配置
5.1 非 root 用户免 sudo 操作 Docker
每次都 sudo docker xxx 太烦,把当前用户加入 docker 组:
sudo usermod -aG docker $USER
newgrp docker
⚠️ 注意:docker 组等同于 root 权限,多用户环境下慎用,生产环境建议用 rootless 模式。
5.2 验证 Docker Compose
新版 Docker 已集成 Compose v2,无需单独安装:
docker compose version
5.3 存储驱动选择
Ubuntu 22.04+ 和 CentOS Stream 9/10 内核都默认支持 overlay2,这也是 Docker 官方推荐的存储驱动,无需手动配置。
如果你刷的老内核(比如 CentOS 7),就只能用 devicemapper,性能差很多。建议直接升级系统。
六、常用服务部署示例
Docker 装好不跑点服务等于白装。给三个我自己常用的容器部署示例,TUF 这种中等配置 NAS 跑起来毫无压力。
6.1 Portainer(Docker 可视化管理)
docker run -d -p 9000:9000 \
--name portainer \
--restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
portainer/portainer-ce:latest
访问 http://NAS_IP:9000 即可。
6.2 Jellyfin(家庭影音)
docker run -d \
--name jellyfin \
--restart=always \
-p 8096:8096 \
-v /your/media/path:/media \
-v jellyfin_config:/config \
jellyfin/jellyfin:latest
6.3 Vaultwarden(密码管理)
docker run -d \
--name vaultwarden \
--restart=always \
-p 8080:80 \
-v /your/vaultwarden-data:/data \
vaultwarden/server:latest
访问 http://NAS_IP:8080 即可开始使用。
来源华强北商行 · 数码科技资讯