在法国用二手 NAS 跑 Docker,先别急着把 compose 文件放机械盘
先说环境:DS218+,DSM 7.1,两块 4T 机械盘做 SHR,外挂一块旧 SSD 走 USB 3.0 当临时盘。需求很简单,跑几个小容器:Uptime Kuma、MinIO 的单机测试实例、一个抓 RSS 的小脚本。现象是每次 docker compose up -d 之后,容器起来要等十几秒,日志偶尔刷 context deadline exceeded,重启 NAS 之后更明显,有时候一个容器直接卡在 Created 不动。
我一开始以为内存不够,加到 10G 还是这样。后来把 compose 文件、容器配置目录全挪到那块 USB SSD 上,问题基本消失。做法不复杂,先在 SSD 上建目录:
mkdir -p /volumeUSB1/usbshare/docker/{compose,data}
然后在 DSM 的「套件中心」里把 Docker 的默认存储位置改到这块盘,或者更稳一点,直接用命令行指定 project 目录:
cd /volumeUSB1/usbshare/docker/compose
cat > uptime-kuma.yml <<'EOF'
services:
uptime-kuma:
image: louislam/uptime-kuma:1
restart: unless-stopped
ports:
- "3001:3001"
volumes:
- ../data/uptime-kuma:/app/data
EOF
docker compose -f uptime-kuma.yml up -d
注意卷不要写成绝对路径的机械盘目录,否则等于没挪。
为什么这样有效:容器启动时要频繁读写镜像层和小文件元数据,机械盘上 SHR 的随机 IO 本来就慢,DSM 的 Docker 默认目录又在系统卷里,和套件、日志抢 IO。SSD 上虽然只是 USB 3.0,但 4K 随机读写比机械盘高一个数量级,启动等待和超时就下来了。代价是这块盘成了单点,USB 掉线容器会挂,所以只放能重建的东西,数据卷该在机械盘上还是在机械盘上。
哪里会失效:USB SSD 休眠后第一次访问会卡几秒,restart: unless-stopped 也救不了;群晖的 USB 口供电不稳,我遇到过换线才好;另外别把 MinIO 的数据目录放这块盘,测试数据丢了我重灌过一次。
你们在法国这边用二手群晖跑容器,compose 和配置目录是放系统卷、机械盘还是外挂盘?有没有人试过把 Docker 根目录整个迁到 eSATA 上,稳定性比 USB 好吗?
0 条评论
还没有评论,写下第一条。