检测与升级 DPanel Version >= 1.4.2
在容器详情页面中可以查看当前容器是否有更新以及升级当前容器。 升级操作会保留当前容器的全部配置,并重新拉取当前容器使用的镜像重新部署容器。
TIP
多服务端下,请确保每个服务端的版本一致,否则可能会产生不兼容的情况,从而导致升级失败
检测策略
避免过于频繁的请求外部接口,。
检测容器升级时你可以配置【检测策略】
- 自动检测,每次进入容器详情页面时,都会检测更新。并且可以跳过缓存强制检测一次。
- 忽略本次,容器当前使用的镜像未改变时,会忽略检测。
- 永久忽略,会忽略当前容器,其它使用同镜像的容器不受影响。
镜像更新检测逻辑
检测逻辑
镜像的 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 在更新容器时,会停止旧的容器并重新命名【容器名-更新时间】,会将使用的旧镜像命名为【镜像名称-更新时间】。 你在更新容器后,可以重新启动旧容器,以完后更新回退的功能。