是否有一种工具可以立即通知新的 docker 图像版本
Is there a tool that notifies immediately about new docker image versions
我有一个私有的 docker 注册表,用于我自己的图像。我希望 运行 这个图像的容器(通过 docker-compose)在我推送新版本时立即更新。
我知道有 Watchtower (https://containrrr.dev/watchtower/) and Diun (https://crazymax.dev/diun/),但这些容器只在定义的时间间隔内轮询(我现在正在使用 watchtower,但即使使用轮询也没有我喜欢的那么快每分钟)。
我发现 docker 注册表在更新容器时发送通知 (https://docs.docker.com/registry/notifications/) and was looking for a service that uses this. But I didn't found any tool, expect for a Jenkins Plugin (https://github.com/jenkinsci/dockerhub-notification-plugin)。我是不是看错地方了,还是没有工具可以处理来自注册表的通知?
我觉得你得换个角度看问题。如果您将注意力从容器转移,您会发现 GitOps 可能是最合适的选择。您可以使用触发重新部署的 CI/CD 管道实现相同的目的。
如果你只想坚持使用容器,我建议你看看 Harbor,它可以在推送后调用 Webhooks。请参阅文档 (https://container-registry.com/docs/user-manual/projects/configuration/webhooks/)
由于 webhooks 不是 OCI's distribution-spec 的一部分,任何实现它的解决方案都将特定于注册表。这意味着您将来无法在不破坏此实现的情况下轻松更改注册表。注册表及其使用的标准的部分价值在于允许可移植性,包括图像和与这些注册表一起使用的工具。适用于 distribution/distribution 特定 API 的功能可能不适用于 Nexus、Artifactory 或任何 cloud/SaaS 解决方案,如 Docker Hub、Quay、ECR、ACR、GCR 等。(我将 Harbor 排除在该列表之外是因为它们基于 distribution/distribution,因此这是一个可能会起作用的注册表。)
如果您希望解决方案具有可移植性,则需要将其设计到更高级别的工作流中(例如,执行映像推送的相同 CI 管道会触发部署),或者您留下许多 GitOps 解决方案实现的轮询。还意识到许多注册表使用的 S3 后端最终是一致的,因此使用 distributed/HA 注册表实现,在数据存储有机会复制之前尝试拉取映像可能会触发竞争条件。
我有一个私有的 docker 注册表,用于我自己的图像。我希望 运行 这个图像的容器(通过 docker-compose)在我推送新版本时立即更新。
我知道有 Watchtower (https://containrrr.dev/watchtower/) and Diun (https://crazymax.dev/diun/),但这些容器只在定义的时间间隔内轮询(我现在正在使用 watchtower,但即使使用轮询也没有我喜欢的那么快每分钟)。
我发现 docker 注册表在更新容器时发送通知 (https://docs.docker.com/registry/notifications/) and was looking for a service that uses this. But I didn't found any tool, expect for a Jenkins Plugin (https://github.com/jenkinsci/dockerhub-notification-plugin)。我是不是看错地方了,还是没有工具可以处理来自注册表的通知?
我觉得你得换个角度看问题。如果您将注意力从容器转移,您会发现 GitOps 可能是最合适的选择。您可以使用触发重新部署的 CI/CD 管道实现相同的目的。
如果你只想坚持使用容器,我建议你看看 Harbor,它可以在推送后调用 Webhooks。请参阅文档 (https://container-registry.com/docs/user-manual/projects/configuration/webhooks/)
由于 webhooks 不是 OCI's distribution-spec 的一部分,任何实现它的解决方案都将特定于注册表。这意味着您将来无法在不破坏此实现的情况下轻松更改注册表。注册表及其使用的标准的部分价值在于允许可移植性,包括图像和与这些注册表一起使用的工具。适用于 distribution/distribution 特定 API 的功能可能不适用于 Nexus、Artifactory 或任何 cloud/SaaS 解决方案,如 Docker Hub、Quay、ECR、ACR、GCR 等。(我将 Harbor 排除在该列表之外是因为它们基于 distribution/distribution,因此这是一个可能会起作用的注册表。)
如果您希望解决方案具有可移植性,则需要将其设计到更高级别的工作流中(例如,执行映像推送的相同 CI 管道会触发部署),或者您留下许多 GitOps 解决方案实现的轮询。还意识到许多注册表使用的 S3 后端最终是一致的,因此使用 distributed/HA 注册表实现,在数据存储有机会复制之前尝试拉取映像可能会触发竞争条件。