Skip to content

懒人包一键升级:一条命令升级全部或指定 Docker 容器 ​

📺 本图文教程由视频整理而成,对应的参考视频:好用斋自定义懒人包~一键升级指定或全部docker容器~。如需查看更详细、更具体的操作演示,可观看原视频。

场景:已经用好用斋 Docker 懒人包装好一批容器,之后想批量更新镜像。飞牛这类系统只能逐个点升级,绿联有一键更新,而懒人包现在也能生成一条命令,把 Compose 目录下所有容器检查并升级一遍,还可以只升级指定的几个。

一、先看原生系统怎么做升级 ​

飞牛(fnOS):打开「Docker」→「本地镜像」,有新版本的镜像后面会显示「有新版本」,右侧出现升级箭头,点击即可单个更新。缺点是一次只能升级一个,没有一键升级所有镜像的入口。

绿联:打开「Docker 管理」→「容器」,可升级的容器右侧直接显示升级按钮;容器列表上方还有一个「一键更新」,能把所有可更新的容器一次性升级。这一项上绿联做得比飞牛更方便。

飞牛与绿联都是 Debian 底层,日常使用都很成熟,不必有偏见,只是 UI 功能取舍不同。

二、在懒人包页面生成升级命令 ​

  1. 打开好用斋官网,点击顶部「Docker 懒人包」。
  2. 「NAS 系统」选择你的系统,这里以飞牛为例;「架构」保持默认 x86_64。
  3. 「IP 地址」这一次可以不填——纯升级不涉及 IP。但如果你还要勾选容器、生成导航配置,则必须填写。
  4. 「脚本位置」默认是 /vol1/1000/compose/all,这是上一期飞牛懒人包教程中使用的位置。你的 Compose 脚本放在别处时,在这里手动改成实际路径。
  5. 点击「全部升级」,右侧命令面板立即出现四条命令。
懒人包页面填写系统与脚本位置,点击「全部升级」后右侧生成四条升级命令

路径填错会直接导致后续命令执行失败,所以在点「全部升级」之前先核对一遍。

三、四条命令分别做什么 ​

生成的命令形如:

bash
cd /vol1/1000/compose/all && \
docker compose pull && \
docker compose up -d && \
docker image prune -f
  1. cd:进入你填写的脚本位置,也就是存放全部 Compose 脚本的目录。
  2. docker compose pull:拉取所有服务的最新镜像。
  3. docker compose up -d:比对刚拉取的镜像与正在使用的镜像,发现更新就自动关闭该容器并用新镜像重建,没有更新的容器保持运行、不被打断。
  4. docker image prune -f(可选):删除被替换下来、标签变成 none 的旧镜像,释放磁盘空间。更新的容器较多时能省下不少空间,空间紧张就保留这一行。

注意:这里没有 docker compose down。更新容器时它并不是必需的——docker compose up -d 自身会比对镜像并只重建有变化的容器,比先 down 再 up 更平滑,不会把所有服务一起中断。

四、复制命令并在终端执行 ​

  1. 点击命令面板下方的「复制内容」。
  2. 打开飞牛终端,输入 sudo -i 回车,再输入管理员密码。输入密码时屏幕不显示字符,输完直接回车。
  3. 提示符从 haoyong@... 变成 root@...,说明已获得管理员权限。
  4. 在终端内右键粘贴刚复制的四条命令,回车执行。

拉取过程中可以直接看状态:显示 pulling 表示正在拉取新镜像,显示 pulled 表示该镜像已是最新、无需更新。全部拉取完毕后会自动重建有更新的容器,升级即完成。

提示:镜像较多时拉取耗时较长,中途不要关闭终端。只要这条命令跑完,所有容器就都检查并升级过了。

五、只升级指定的容器 ​

不想全量升级时,在「全部升级」右侧的「输入服务名称」框里填写服务名即可。

  1. 服务名不是容器名。打开对应的 Compose 脚本可以看到两个名字:jellyfin: 冒号前的是服务名,下面 container_name 才是容器名,这里要用前者。
  2. 输入 jellyfin 后,右侧命令中的 pull 和 up -d 后面会自动追加该服务名:
bash
cd /vol1/1000/compose/all && \
docker compose pull jellyfin && \
docker compose up -d jellyfin && \
docker image prune -f
  1. 需要同时升级多个时,用空格分隔,例如输入 jellyfin emby,命令就会只处理这两个服务:
bash
docker compose pull jellyfin emby
docker compose up -d jellyfin emby
  1. 复制命令,回到终端右键粘贴、回车。输出里只会拉取这两个镜像;若它们本来没有更新,容器继续以 running 状态运行,旧镜像也不会被删除(释放空间显示 0B)。
在服务名称框输入 jellyfin 后,右侧命令自动追加该服务名

想恢复为全量升级,把服务名称框清空即可。

总结 ​

  1. 飞牛只能在「本地镜像」里逐个升级;绿联在「容器」页提供一键更新。
  2. 懒人包页面选好系统与脚本位置,点击「全部升级」即可生成四条命令。
  3. 四条命令依次是进入目录、拉取镜像、重建有更新的容器、删除旧镜像(可选),不需要 docker compose down。
  4. 终端 sudo -i 提权后粘贴执行,pulling / pulled 可判断哪些镜像有更新。
  5. 只升级部分容器时,在服务名称框填写服务名(不是容器名),多个用空格分隔。

参考视频 ​

好用斋自定义懒人包~一键升级指定或全部docker容器~

好用斋官网 ​

https://haoyongzhai.com