Skip to content

从 Watchtower 迁移 ​

Dozzle 可以做 Watchtower 做的事:按计划检查容器是否有更新的镜像并更新它们。每次更新都会被观察,如果新容器无法稳定运行,就会换回旧容器。本页把 Watchtower 的设置对应到 Dozzle 的设置。

开启 ​

Dozzle 需要开启操作,并把 /data 放在卷上:

yaml
services:
  dozzle:
    image: amir20/dozzle:latest
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - dozzle-data:/data
    ports:
      - 8080:8080
    environment:
      DOZZLE_ENABLE_ACTIONS: true
      DOZZLE_AUTO_UPDATE: daily
      DOZZLE_AUTO_UPDATE_TIME: "04:00"
volumes:
  dozzle-data:

也可以去掉两行 DOZZLE_AUTO_UPDATE,改在 设置 → 更新 中设置计划,并在那里选择 哪些容器。然后停止 Watchtower,以免两者更新同一批容器。

设置 ​

WatchtowerDozzle
--schedule 或 --intervalDOZZLE_AUTO_UPDATE(daily,或周日的 weekly)和 DOZZLE_AUTO_UPDATE_TIME。每天最多一次
所有容器(默认)哪些容器:全部
--label-enable 配合 com.centurylinklabs.watchtower.enable=true哪些容器:有标签的容器(默认)配合 dev.dozzle.update: auto
com.centurylinklabs.watchtower.enable=falsedev.dozzle.update: off
--cleanup始终开启。更新后删除没有标签的旧镜像,并保留一个上一版本镜像用于回滚
--monitor-only在 有标签的容器 下不给容器加标签:容器会被检查并显示为可用更新,但从不自行更新
--rolling-restart始终如此:每台主机一次只更新一个容器
--notification-url针对容器事件的 告警和 Webhook,或 Dozzle Cloud,它会观察每次更新,并在新版本开始出错时告诉你
--run-once更新抽屉中的 更新
私有仓库凭据不支持。来自私有仓库的容器会被跳过

标签 ​

Dozzle 不读取 Watchtower 的标签。把 com.centurylinklabs.watchtower.enable 换成 dev.dozzle.update:

dev.dozzle.update结果
auto按计划更新,除非 哪些容器 选的是 仅 Dozzle
(无标签)选 全部 时按计划更新。否则会被检查并显示为可用更新,由你手动应用
off从不检查,从不更新

旧的 Dozzle 标签仍然有效:dev.dozzle.auto-update=true 视为 auto,dev.dozzle.update-check=false 视为 off。

不同之处 ​

  • 旧容器会一直保留,直到新容器稳定运行(如果有健康检查,还要处于健康状态)。否则会恢复旧容器。
  • 不健康的容器会被跳过。
  • 已停止的容器永远不会被更新,即使它带有 auto 标签。
  • 使用 Dozzle Cloud 时,开始出错的计划更新可以被回滚。之后在发布更新的镜像之前,计划会跳过该容器。
  • 固定到摘要的镜像和本地构建的镜像会被跳过,因为没有更新的版本可比较。

基于 MIT 许可证发布。开源项目,由 Docker OSS 赞助。