Skip to content

检测与升级 DPanel Version >= 1.4.2

在容器详情页面中可以查看当前容器是否有更新以及升级当前容器。 升级操作会保留当前容器的全部配置,并重新拉取当前容器使用的镜像重新部署容器。

TIP

多服务端下,请确保每个服务端的版本一致,否则可能会产生不兼容的情况,从而导致升级失败

container-upgrade-1

检测策略

避免过于频繁的请求外部接口,。

检测容器升级时你可以配置【检测策略】

  • 自动检测,每次进入容器详情页面时,都会检测更新。并且可以跳过缓存强制检测一次。
  • 忽略本次,容器当前使用的镜像未改变时,会忽略检测。
  • 永久忽略,会忽略当前容器,其它使用同镜像的容器不受影响。

镜像更新检测逻辑

检测逻辑

镜像的 digest 值是用于标识镜像在远程仓库中的唯一标识,面板检测镜像更新也是通过此值。 如果镜像不包含 digest 值,则无法检测更新。查看镜像的 digest 可以通过以下命令查看:

docker images --digests

对于使用面板仓库加速地址拉取的镜像 digest 值属于镜像的加速标签,如果将此标签删除后则无法检测更新。

对于支持不同架构平台的镜像,即使只有其它一个平台发生变则,也会导致 digest 值发生变化,面板也会检测出更新。

docker 镜像命名规范

镜像名 dpanel/dpanel:latest、dpanel/dpanel:lite 等,冒号(:)后面的部分称之为 Tag,其作用 为等同于镜像的版本号。

通常情况下 tag 的构成有以下几种情况:

  • 固定标识,比如:dpanel/dpanel:lite、nginx:latest、nginx:mainline 等
  • 大版本号,比如:nginx:1.27
  • 小版本号,比如:dpanel/dpanel:1.4.0-lite、nginx:1.27.3
  • 根据发行时间,比如:minio/minio:RELEASE.2024-10-02T17-50-41Z

在镜像每一个版发布时,会从大到小,依次覆盖 tag 推送。比如 nginx 发布 1.27.4 时,会同时推送至 nginx:1.27、nginx:latest、nginx:mainline、nginx:1.27.4 等,小版本 nginx:1.27.3 则不会被覆盖。

检测更新

  • 当你使用 nginx:latest 创建容器后,当 nginx 有更新推送可以检测出更新。
  • 当你使用 nginx:1.27 创建容器后,仅当 nginx 发布 1.27.* 相关版本时会检测出更新。
  • 当你使用 nginx:1.27.3 创建容器后,通常情况下无法检测出更新。

在创建容器时,需要根据自身情况,选择合适的镜像 tag 以确保可以正常使用【快速升级容器】功能。

更新回退

DPanel 在更新容器时,会停止旧的容器并重新命名【容器名-更新时间】,会将使用的旧镜像命名为【镜像名称-更新时间】。 你在更新容器后,可以重新启动旧容器,以完后更新回退的功能。