在fnOS中挂载Unraid的docker.img

请按以下步骤操作,将 docker.img 里的 volumes 数据提取出来:

第一步:创建挂载点并挂载
我们需要把这个镜像文件像插入 U 盘一样“挂载”到一个临时目录。

# 1. 创建临时目录
mkdir -p /mnt/docker_temp

# 2. 挂载镜像文件 (通常是 Btrfs 格式)
mount -o loop /vol1/system/docker/docker.img /mnt/docker_temp

如果提示文件系统错误,尝试指定类型:

mount -o loop -t btrfs /vol1/system/docker/docker.img /mnt/docker_temp

🚀 执行迁移操作

现在我们把挂载好的旧镜像数据,拷贝到这个新位置。

前提:

你需要先挂载旧的 docker.img 到 /mnt/docker_temp。

必须停止 Docker(防止数据库在拷贝时损坏)。

步骤 1:停止 Docker

systemctl stop docker

步骤 2:执行拷贝 (Rsync)
我们将旧镜像里的卷(比如 nextcloud 相关的)同步到新目录。

# 拷贝所有的卷
# 注意:目标路径结尾的斜杠 / 很重要
rsync -avP /mnt/docker_temp/volumes/. /vol1/docker/volumes/

/vol1为飞牛中的第一个存储池,根据实际情况调整

步骤 3:验证文件结构
拷贝完后,检查一下新目录。Docker 的标准卷结构必须是 卷名/_data。

ls -F /vol1/docker/volumes/

你应该看到里面有docker卷的文件夹。 如果有,那就对了。

步骤 4:恢复 Docker 并清理
启动 Docker:

systemctl start docker

验证:

docker volume ls

你应该能看到 nextcloud_aio_nextcloud 等卷已经出现在列表里了。

启动容器:
现在去启动你的 Nextcloud 容器,数据应该都在。

卸载旧镜像(确认一切正常后再做):

umount /mnt/docker_temp
rmdir /mnt/docker_temp

💡 小贴士
只拷需要的:volumes 目录下通常会有很多乱码名字(如 3d8a…)的文件夹,那些是匿名卷或临时数据。如果你只需要 Nextcloud、Plex 等重要数据,建议只挑有名字的文件夹拷(例如 rsync -avP /mnt/docker_temp/volumes/nextcloud* …)。

权限保留:rsync -a 参数非常关键,它保证了文件的所有者和权限不会变,这样容器启动时才不会报错 “Permission denied”。