2026/10/28 18:19:35

NAS 用 Docker 部署 Alist:统一挂载阿里云盘与 115 网盘

NAS 用 Docker 部署 Alist:统一挂载阿里云盘与 115 网盘 简介面向绿联 NAS 用户与 Docker 入门者的 Alist 部署图文教程围绕在绿联 DX4600 的 Docker 环境中安装 Alist 并挂载常见网盘展开帮助缺少容器经验的小白按图完成部署、初始化与日常访问配置。资源包仅含 1 个 PDF 文件大小约 2.91MB以图文步骤、界面截图和目录引导组织内容目录分段清晰便于按章节查阅容器参数设置、初始登录密码获取、阿里云盘与 115 网盘挂载等关键环节也兼顾存储空间、端口与重启策略等易错细节。教程强调按顺序操作并对刷新令牌、Cookie 等填写位置作出说明适合新手对照实操降低反复试错成本快速理解 Alist 网盘聚合的基本配置思路。目前已有 915 人学习可作为绿联 NAS 上搭建个人网盘入口的入门参考群晖或极空间用户需留意系统差异。1. 一台 NAS 加一个容器把五六个网盘收成一个入口家里的四盘位 NAS 装好之后硬盘是满了可真正的资料还散在三四个网盘里——手机一个 App、电视盒子一个 App、公司的电脑又装一套光是记住哪份文件在哪个盘就够折腾。Alist 干的事很朴素把这些网盘当一个存储驱动接进来统一挂在它自己的虚拟目录下再用 WebDAV 和浏览器把它吐出去剩下的客户端只要认一个地址就行。这篇讲的是在 DX4600 这一档的四盘位机型上用自带的 Docker 图形界面把 Alist 跑起来再挂上阿里云盘和 115 网盘。全程不用 SSH不用改配置文件纯点按钮加粘贴两段令牌。适合手里有 NAS、被多网盘来回切换烦过、又不想折腾命令行的人。坑主要集中在两个地方数据目录的挂载方式以及令牌和 Cookie 的获取后面会拆开讲。2. 从镜像到容器启动五个必须填对的参数Docker 图形界面把创建容器包装成了一串向导页看着友好实际上每一页都埋着默认值。默认值在这台机器上不一定错但错一个就够你排查半小时。这一章把创建流程拆成四段镜像怎么挑、目录怎么映射、端口和重启策略怎么定、起来之后怎么验证。2.1 镜像来源与 tag 选择latest 省事但不省心进入 Docker 主界面左边镜像管理上方切到本地镜像点添加官方库的搜索框里敲xhofe回车第一个结果就是xhofe/alist。选中、确定然后等。这个镜像拉取体积不算大但国内直连官方库有时候会卡在某一层不动进度条走一半停住是常事。真卡住了别反复点取消先去 Docker 的全局设置里配一个镜像加速地址再回来重试通常就通了。这里有个选择镜像名后面带不带 tag。界面上直接选第一个拉的是latest。latest的好处是永远拿最新版坏处是你不知道自己在跑哪个版本——某天容器重启镜像被重新拉了一次行为变了你连回退到哪都不知道。我自己的习惯是先在镜像仓库页面确认一个明确的版本 tag拉xhofe/alist:具体版本跑稳了再考虑升级。这和网上那些 docker 课程资源里教的不太一样课程里通常只讲docker pull nginx不会告诉你版本漂移在长期运行的服务上有多难受。字段界面上叫什么建议值说明镜像URL/镜像名称xhofe/alist官方库搜索 xhofe 即可命中容器名称容器名称alist后面所有命令都靠这个名字定位重启策略重启策略容器退出时总是重启等价于--restartalways存储映射存储空间宿主Docker/alist/data→ 容器/opt/alist/data必须是读写端口映射端口设置本地5244→ 容器5244本地端口可换容器端口别动表格里这五项前四项任何一项错了症状都不一样镜像错是拉不下来名称错是后面 exec 找不到容器重启策略错是断电恢复后服务不自启存储映射错最阴——容器能起来、能登录但你改的密码、加的网盘配置重启一次全没了。拉取完成后界面会显示 All done点完成。回到本地镜像列表如果没看到刚拉的那个点右上角刷新。找到xhofe/alist这一行下面有个创建容器的按钮从这里进向导。2.2 存储映射/opt/alist/data只读会静默失效向导第一步改容器名改完打开高级模式点下一步。第二步就是重启策略选容器退出时总是重启容器。别急着往下点真正的关键在存储空间这一页。Alist 把所有的运行时状态都放在容器内的/opt/alist/data下config.json存服务配置data.db存用户和存储挂载记录还有一层索引缓存。这个目录如果不映射到宿主机容器删了配置就没了如果映射了但是勾了只读问题更隐蔽——容器照样启动网页照样打开你新建一个网盘挂载点保存界面上显示成功实际上写盘失败刷新一下就没了。宿主侧的准备动作要在创建容器之前做完。在存储空间的根目录里依次建三级目录Docker→alist→data。然后在映射界面点自动选中你放 Docker 的那块盘M.2 上的存储池响应最快机械盘也能用只是首次建索引会慢再依次双击Docker、alist、data停在data这一层点右下角选择。映射关系填好后把右边那个只读开关点一下切成读写——这一步漏掉的人不少因为默认状态看着像已经可用了。命令行等价写法是这样方便你在别处复现# 先在宿主机建好三级目录卷标以实际为准这里是 volume2 mkdir -p /volume2/Docker/alist/data # 把目录属主放开避免容器内写入时权限不足 chmod 755 /volume2/Docker/alist/data # 启动容器-v 左边是宿主机路径右边是容器内固定路径 docker run -d \ --name alist \ --restartalways \ -p 5244:5244 \ -v /volume2/Docker/alist/data:/opt/alist/data \ -e TZAsia/Shanghai \ xhofe/alist:latest-v两边的路径不能写反左边是宿主真实路径右边必须是/opt/alist/data这个路径是镜像里写死的改成/data之类容器会找不到配置而重新初始化。-e TZAsia/Shanghai是时区影响日志时间戳和定时任务的触发时刻不设的话日志时间是 UTC排查问题时对不上你操作的时间点。--restartalways对应界面上那个容器退出时总是重启。同样的东西用 compose 写更清楚也方便以后备份和迁移services: alist: image: xhofe/alist:latest container_name: alist restart: always ports: - 5244:5244 volumes: - /volume2/Docker/alist/data:/opt/alist/data environment: - TZAsia/Shanghaiports里5244:5244冒号左边是宿主机端口右边是容器端口。右边永远别改左边冲突了才改。volumes只写了一行说明这个服务除了数据目录之外不需要额外挂载——如果你的媒体文件也想让 Alist 直接读本地盘再加一行-v /volume2/Media:/本地媒体:ro注意末尾:ro是只读防止误删。提示目录建好之后再点创建容器。顺序反了的话容器启动时会把data当成空目录初始化一份配置你再改映射旧配置就留在容器层里了。2.3 端口与重启策略5244 之外的隐性配置端口设置那一页只填一个数本地端口 5244。这个端口在 Alist 的镜像里是默认监听端口改了本地端口不影响容器内部但你之后访问的地址要跟着改。判断冲突的办法很简单如果创建时提示端口被占用换一个 5245、15244 之类没被占的然后记住它。网络模式保持默认的 bridge。有人喜欢切 host 模式图省事host 模式下容器直接用宿主网络栈端口映射那一页填的东西全部失效访问时直接用 5244看起来更简单代价是这个端口从此彻底暴露在宿主的所有网卡上而且多个容器抢同一个端口时没有任何隔离。NAS 上这种单机场景用 bridge 完全够。重启策略容易被当成可有可无的选项。它在两种情况下决定你有没有觉睡一是 NAS 意外断电恢复后Docker 服务自启但容器不自启你出差在外发现所有网盘都连不上二是容器因为内存或依赖问题崩了一次没有重启策略就一直是退出状态。always和unless-stopped的区别在于前者不管你是手动停的还是崩的Docker 重启后一律拉起来后者会记住你手动停过重启后保持停止。NAS 上我一般用always因为我手动停容器基本就是为了马上重建它。剩下的页面不用动。Alist 这个镜像不需要额外的环境变量、不需要改入口命令、不需要加设备映射。向导最后点完成回到容器管理找到alist这一行点下面的启动。2.4 首启验证从IP:5244到日志里的 password启动之后有两个入口一是点容器右边的快捷方式在 NAS 桌面生成一个图标二是在局域网内任意一台设备的浏览器里敲http://NAS的IP:5244。中间那个冒号必须是英文半角中文冒号会让浏览器直接报错这个坑每年都有人踩。页面能打开说明容器活了接下来是登录。Alist 首次启动会生成一个随机管理员密码打印在容器日志里。回到容器管理点alist的详情上方切到日志往下滑找password这个单词后面那一串就是。默认用户名是admin。如果日志已经被滚动覆盖或者你压根没找到那一行不用重建容器直接在宿主机上执行# 直接指定一个新密码比翻日志快 docker exec -it alist ./alist admin set 你的新密码 # 或者让程序重新生成一个随机密码并打印出来 docker exec -it alist ./alist admin randomdocker exec是进到正在运行的容器里执行命令-it表示交互式带终端。./alist是容器工作目录/opt/alist下的可执行文件admin set后面跟明文密码。这条命令我在老版本和新版本上都用过属于兜底手段比删容器重建文明得多——重建会把已经配好的挂载全清掉。登录进去第一件事不是急着挂网盘是改密码。左侧点用户右侧列表里能看到admin点编辑把密码换掉。同一个列表里还有几个guest账户那是给匿名访问准备的如果你不打算让局域网里任何人都能浏览把它们的密码也改掉或者干脆把状态关掉。改完会强制重新登录一次属正常。现象大概率原因处理方式页面打不开连接被拒容器没启动或端口没映射上看容器状态确认端口行是 5244:5244页面能开登录提示密码错用了旧日志里的密码用alist admin set重设登录成功改密码后立刻失效data目录只读重建容器时把映射改成读写打开是空白页或报 404访问路径多了斜杠或端口写错只写http://IP:5244不加子路径把上面这张表过一遍第二章该做的就做完了。容器在跑、数据落盘、管理员密码是你自己设的接下来才是这个工具真正值钱的部分——挂载。3. 网盘挂载实操刷新令牌与 Cookie 两条路Alist 的挂载界面字段很多第一次打开容易懵。其实不同网盘的挂载逻辑只有两类一类走 OAuth 令牌阿里云盘这条线一类走浏览器 Cookie115 这条线。搞清楚你填的这串东西是什么、从哪来、什么时候会过期比死记字段顺序有用得多。3.1 先理解挂载模型驱动、挂载路径、根文件夹左侧点存储上方点添加弹出的表单里最上面是驱动下拉框。这个下拉框决定了下面出现哪些字段——选阿里云盘就出现刷新令牌选 115 就出现 Cookie字段是跟着驱动变的不用背。三个概念要分清挂载路径是 Alist 内部的虚拟路径比如你填/阿里云盘那在 Alist 首页就会多出一个叫阿里云盘的目录。它跟宿主机的/volume2/xxx没有任何关系纯粹是显示层的命名。根文件夹 ID决定这个挂载从网盘的哪一层开始往下暴露。留空或者填root就是从网盘根目录开始填一个具体 ID 就只暴露那个子目录。这个字段的价值在于隔离——工作资料和私人照片在同一个网盘里你可以建两个挂载一个只指向工作目录分配给不同用户。排序和缓存过期这些高级项第一次配的时候全部留默认。有人一上来就把缓存时间调到 0 追求实时结果是每刷一次列表就打一次网盘 API很快触发限流页面转圈转到超时。挂载路径的命名我建议用英文或者拼音别用中文加空格。Alist 自己显示没问题但挂上 WebDAV 之后部分播放器和同步工具对中文路径的处理各有各的脾气出现乱码或者列不出目录时你很难判断是网盘的问题还是客户端的问题。3.2 阿里云盘刷新令牌这条链怎么走驱动选阿里云盘 Open。表单里最关键的字段是刷新令牌旁边通常还有个根文件夹 ID。刷新令牌不是账号密码是一段很长的授权凭证由官方文档提供的令牌获取页面扫码授权后生成。获取流程是这样的打开 Alist 官方文档站找到阿里云盘对应的那篇说明里面有一个令牌获取入口点进去用阿里云盘 App 扫码登录并确认授权页面会吐出一大段字符串形如xxxxx-xxxxx这种带连字符的长串。整段复制一个字符都不能少。粘贴的时候有三个高频翻车点。第一复制时前后带了空格或换行粘进去保存报错肉眼看不出来删掉重粘一次就好。第二手机上看文档、电脑上操作中间用聊天软件转发长字符串被自动截断成两行你只复制了第一行。第三令牌有有效期放了几周再拿来用可能已经失效重新扫一次码生成新的。字段填完挂载路径写/阿里云盘其他不动点保存。保存之后列表里这一行会有一个状态列正常是work出错会显示error并把原因写在旁边。看到 error 先别急着删了重建把鼠标放到错误信息上看完整提示多数是令牌无效或签名错误对应上面说的复制问题和过期问题。保存成功不等于能看到文件。回到首页点进那个目录如果转圈很久最后列表为空通常是根文件夹 ID 填了一个不存在的值或者这个账号的网盘是空的。换个根目录确认一下再回来调。3.3 115 网盘Cookie 的取法与有效性判断115 走的是另一条路需要的是浏览器 Cookie。步骤稍微手工一点但熟练之后一分钟能搞定。先在电脑浏览器里打开 115 网盘网页版并登录按 F12 打开开发者工具切到 Network网络面板然后按 F5 刷新页面。列表里会出现一堆请求随便点一个同域名的请求右侧找到 Request Headers请求标头里面有一行Cookie:后面那一长串就是。整段选中复制。# 抓到的 Cookie 形如示意实际值更长 Cookie: UID1234567_A1_1234567890; CIDabcdef0123456789; SEID9876543210; KIDxxxxx这段东西本质上是你在该网站上的登录态凭证谁拿到谁就能以你的身份操作网盘。所以它不能贴到任何公开的地方也不能存在随手能同步出去的笔记里。这一点比技术细节重要。回到 Alist 添加存储驱动选 115 网盘对应的那一项挂载路径写/115把 Cookie 粘进对应字段保存。状态列变work就成了。Cookie 和刷新令牌最大的区别在于生命周期。Cookie 跟着浏览器会话和服务器端的策略走可能几天、可能几个月就失效失效后的表现是目录还能列出来因为走了缓存但点开文件提示获取下载地址失败或者干脆列表也空了。这时候不用怀疑 Alist 坏了回浏览器重新抓一次 Cookie覆盖掉原来的值就行。注意抓 Cookie 时浏览器别开着无痕模式无痕窗口关掉之后会话就没了抓到的值当场作废。3.4 多盘并存时的路径规划与权限取舍把两三个网盘都挂上之后首页的目录结构就是你以后天天看的东西值得花五分钟规划一下。我的习惯是扁平的英文命名/aliyun、/pan115、/local本地盘。不用嵌套不用中文全部一级目录。原因是一级目录在 WebDAV 客户端里展开最快嵌套层级多了某些播放器在浏览时会一层层发请求体验很差。如果同一个网盘有两个账号挂载路径就写/aliyun-a、/aliyun-b别都叫阿里云盘不然你自己都分不清哪个是哪个。权限方面Alist 里能控制的是哪些用户能看到哪个挂载网盘本身给的是读写权限的话通过 Alist 删除文件会真实调用网盘 API 删掉。这个设计没有回收站兜底删了就是删了。我的做法是给家里人用的账号只分配只读的挂载路径需要写入的账号单独建日常浏览用只读那个。列表里那一堆高级选项比如Web 代理WebDAV 策略排序第一次全部保持默认等某一类文件确实打不开、或者列表顺序确实乱得受不了再回头逐项调。4. 挂载之外的三个能力WebDAV、多用户与反向代理容器跑起来、网盘挂上去Alist 已经能当个网页版文件管理器用了。但它的价值不止于此——真正让它在 NAS 上站得住脚的是它能把这一堆网盘重新包装成一个标准协议出口让别的软件接进来。4.1 WebDAV 导出让播放器和同步工具接进来Alist 默认就开了 WebDAV入口是http://NAS的IP:5244/dav账号密码就是你登录 Alist 用的那套。不用额外配置不用装插件。在客户端里填的时候地址栏只写到/dav这一层后面不要带具体的网盘路径进去之后目录结构会自己列出来。有些客户端要求区分服务器地址和路径两个字段那就服务器写http://IP:5244路径写/dav。客户端类型地址填法常见问题电视端播放器http://IP:5244/dav只支持 HTTP 基本认证确保账号密码正确桌面同步工具服务器http://IP:5244路径/dav大文件上传需要调大超时手机文件管理器http://IP:5244/dav中文路径可能乱码建议用英文目录名命令行挂载http://IP:5244/dav挂载后写入速度受网盘上传带宽限制这里要说清楚一个预期通过 WebDAV 读写网盘文件速度上限是你的宽带上行和网盘服务端限速中较小的那个跟 NAS 的局域网千兆没有关系。本地盘挂载进去是千兆速度网盘挂载进去可能是几百 KB/s这是物理现实不是配置问题。有人在论坛里抱怨Alist 太慢八成是把这两种挂载混为一谈了。还有一个细节WebDAV 默认走的是 HTTP 明文账号密码在局域网里是裸奔的。家里内网用问题不大如果你做了端口转发把 5244 暴露到公网那就必须先上 HTTPS下一节讲。4.2 用户与权限admin 改名和 guest 清理左侧用户页是整个服务的安全边界。默认装完之后有两个角色admin是管理员guest是给匿名访问用的。先说admin。用户名可以改改成什么随你但别用admin这种一眼就知道的用户名配一个弱密码。密码要求不高十几位混合字符就行反正你自己也不常输——大部分客户端记住一次就不用再填了。改完用户名之后之前配置过的 WebDAV 客户端要同步改不然会一直认证失败这个很容易忘。再说guest。这个账户默认是启用状态且密码为空意思是任何能访问到IP:5244的人打开网页就能直接浏览你挂载的所有网盘不需要登录。在家里内网、只有你自己设备的情况下这算是便利但只要家里有客人连过 Wi-Fi或者你把端口映射出去了这就是个洞。我的处理是直接把guest的状态关掉需要分享的时候再单独建一个受限账户。受限账户怎么建新建用户设置密码然后在权限里指定它能看到的路径。比如只给它/local/家庭照片这一个挂载路径的读权限它登录之后就只看得到这一个目录其他网盘对它完全不可见。这个功能配合第 3 章说的多挂载拆分能做出相当细的分权——同一个网盘给 A 用户看工作目录给 B 用户看影音目录。4.3 反向代理与 HTTPS把端口收进统一入口如果你的 NAS 上已经有一套反向代理在跑绝大多数 NAS 系统的 Web 管理界面背后都有可以把 5244 收进去用一个域名加 HTTPS 对外省得记端口号。Nginx 侧的配置大致是这样server { listen 443 ssl; server_name pan.example.lan; ssl_certificate /path/to/fullchain.pem; ssl_certificate_key /path/to/privkey.pem; location / { proxy_pass http://127.0.0.1:5244; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; # WebDAV 上传大文件必须关掉请求体缓冲否则会 413 或超时 proxy_request_buffering off; client_max_body_size 0; proxy_read_timeout 3600s; proxy_send_timeout 3600s; } }几个参数值得单独说。proxy_request_buffering off是关键开着的话 Nginx 会把整个上传请求先缓存到本地磁盘再转发几十 GB 的文件直接撑爆临时空间或者超时失败。client_max_body_size 0是取消请求体大小限制默认是 1MB不改的话传个图片都失败。两个 timeout 拉到 3600 秒是因为网盘上传本身就慢默认 60 秒根本不够。proxy_set_header Host $host这一行决定 Alist 生成下载链接时用的域名。漏了它页面可能正常但点下载会跳到一个内网 IP 的地址外部访问时直接打不开。这类问题排查起来很费劲因为页面上看不出任何异常。提示反向代理配好之后原先的IP:5244依然可用。确认新入口完全正常了再考虑在防火墙里关掉旧端口别一上来就把自己锁在外面。4.4 索引与定时任务让列表刷得快一点网盘目录的列表请求是有延迟的尤其是目录里文件多的时候每次点进去都转两三秒。Alist 提供了目录索引功能可以把目录结构预先拉下来缓存住之后打开就是秒出。在存储的编辑页面里能找到索引相关的开关打开之后它会按设定的周期去同步。这个东西要克制使用给一个几万文件的根目录开索引第一次构建可能要跑很久期间还会持续打网盘 API容易被限流。我的做法是只给常用的那几个子目录开而且把周期设长一点一天一次足够。左侧还有一个任务页面能看到索引构建、缓存清理这些后台任务的执行记录和状态。列表加载异常慢的时候先来这里看有没有卡住的任务比直接去翻容器日志快。5. 避坑与排查五个真实翻车的现场下面这五条都是我自己或者身边人实际遇到过的按发生顺序排列每条都写清楚现象、原因和解决动作。真卡住的时候照着对一遍比从头重装一遍容器省事。5.1 镜像拉到一半不动重试也卡在同一层现象镜像管理里进度条走到某个百分比停住等十分钟没变化点取消再重来还是卡在同一个位置。原因官方镜像仓库的某些层在国内拉取不稳定跟你的带宽没关系是链路上的问题。另外 Docker 默认的并发拉取层数在某些网络环境下反而拖慢速度。解决去 Docker 的全局设置里配置镜像加速地址配完重启一次 Docker 服务再拉。如果配了还是卡改用命令行拉取docker pull xhofe/alist:latest能看到每一层的实时进度比界面上的单一进度条信息量大卡在哪一层一目了然。实在拉不动就在能正常拉取的机器上docker save成 tar 包拷到 NAS 上docker load导入这条路绕开了网络问题。5.2 容器显示运行中浏览器打不开页面现象容器管理里状态是绿色的运行中日志也没有明显报错但浏览器访问IP:5244一直转圈最后超时。原因排在最前面的是端口映射写错——本地端口填了 5244容器端口被改成了别的。其次是访问的 IP 不是 NAS 当前的内网地址NAS 换了网段或者走了另一个网口你以为的 IP 已经不通了。解决先点容器详情看端口映射那一栏是不是5244:5244右边那个数必须是 5244。然后在 NAS 上确认当前 IP从另一台设备ping一下确认通。还可以在容器内部自查docker exec -it alist sh进去之后curl -I http://127.0.0.1:5244容器内部能通、外部不通问题就在映射或防火墙上。5.3 日志里翻不到 password 那一行现象首次启动后按教程去日志里找初始密码从头翻到尾没有password字样或者日志已经被后续输出冲掉了。原因容器启动过不止一次第一次生成的密码只打印在首启日志里重启之后不再打印。另外部分版本的日志输出格式变了关键词不在行首。解决别在日志里死磕直接用docker exec -it alist ./alist admin random重新生成一个命令会直接把新密码打印在终端上。或者用./alist admin set 新密码主动指定。这两条命令对已有数据没有影响不会清掉已配置的挂载。5.4 网盘挂载显示 work但目录是空的现象存储列表里状态列写着work点进挂载路径转圈几秒后显示空白或者提示获取失败。原因三种可能。一是根文件夹 ID 填了一个不存在的值二是令牌或 Cookie 已经失效但缓存还没刷新状态列显示的是上一次的结果三是这个挂载路径和已有路径重名请求被路由到了另一个存储。解决先点存储那一行的编辑把根文件夹 ID 清空或改成root保存后再进去看。还不行就把令牌或 Cookie 整段删掉重新粘一次注意别带首尾空格。最后检查挂载路径有没有重名两个存储都叫/aliyun时后加的那个实际上被前一个遮住了。5.5 用了几天突然全部失效之前一切正常现象前几天挂载都能用某天早上打开发现某个网盘的目录列不出来或者能列出目录但点文件提示获取地址失败。原因九成是凭证过期。Cookie 类的挂载尤其明显服务端的会话策略一调整你手里的 Cookie 就作废了。令牌类的有效期长一些但也不是永久的。解决重新走一遍获取流程把新值覆盖进对应字段保存。为了减少这类中断我的习惯是只给真正高频使用的网盘做挂载不要一口气挂七八个——挂得越多任何一个过期都会让你觉得整个系统坏了而实际上只是其中一条链路断了。排查时先看哪个挂载的状态列变了比整体怀疑容器要快得多。6. 更新、备份与迁移让这套东西活过一年跑通之后最容易忽略的是长期维护。Alist 的升级频率不低直接拉新镜像重建容器是最省事的做法但前提是你必须先备份/opt/alist/data这个目录——所有挂载配置、用户、密码哈希全在里面data.db一个文件没了几十个网盘的令牌就得重新一个个贴。我的固定动作是这样升级前先停容器然后把宿主机的Docker/alist/data整个目录复制一份加日期后缀再拉新镜像、用原来的映射参数重建容器、启动、看日志确认没有报错、登录进去随便点开一个网盘验证。这五步里只要有一部跳过出问题时就没有后悔药。# 升级前备份日期后缀方便回滚 docker stop alist cp -r /volume2/Docker/alist/data /volume2/Docker/alist/data.bak.$(date %Y%m%d) # 拉新镜像后删掉旧容器数据在宿主机上删容器不丢配置 docker rm alist docker run -d --name alist --restartalways \ -p 5244:5244 \ -v /volume2/Docker/alist/data:/opt/alist/data \ -e TZAsia/Shanghai \ xhofe/alist:latestdocker rm只删容器本身映射到宿主机的目录不受影响这是很多人不敢删容器的心理障碍所在。cp -r那行建议在容器的停止状态下执行运行中复制data.db可能拿到一个写了一半的文件恢复时会打不开。迁移到新机器也是同一套逻辑拷走data目录在新机器上建好同样的映射路径起容器。端口、卷标这些对不上的地方在启动参数里改不要改容器内的路径。最后说个我踩过的坑有一次为了省事把整个Docker目录一起同步到了另一块盘做备份结果同步工具把data.db的软链接也一并复制恢复时数据库指向了一个不存在的路径容器起来直接崩。从那以后我每次备份data目录都强制走一遍停容器 → 整目录cp→ 启动 → 登录验证的流程不图快。希望帮到你。本文还有配套的精品资源点击获取