gpt4 book ai didi

kubernetes - 将镜像从 Registry Y 拉取、标记和推送到 Registry X

转载 作者:行者123 更新时间:2023-12-02 11:37:20 28 4
gpt4 key购买 nike

目前,我们的 CI/CD 环境是基于 Kubernetes 的云。
由于性能优势,Kubernetes 云提供商最近删除了 docker 守护程序。例如,Google Kubernetes Engine 或 IBM Cloud Kubernetes 仅具有 Containerd 运行时,至 运行但不是 构建 容器图像。

许多工具,如 kanikojib修复这个差距。它们提供了一种非常有效地构建 docker 镜像的方法,而无需 docker 守护程序。

问题来了:

  • 图像“registry-x.com/repo/app1:v1-snapshot”从 CI 中的 jib 构建到 registry-x。
  • 然后在某个时间点部署和测试图像“registry-x.com/repo/app1:v1-snapshot”,如果测试成功,则需要将其交付到注册表 Y,并且需要标记为稳定版本在注册表 X 中。

  • 因此图像“registry-x.com/repo/app1:v1-snapshot”需要从“registry-x.com/repo/app1:v1-snapshot”标记为“registry-x.com/web/app1:v1” -release”,然后需要另外标记“registry-y.com/web/app1:v1-release”,并且都需要推送。

    结果:开发中的快照镜像在两个注册表中都可用,并带有发布标签。

    那么如何在没有 docker 守护进程的情况下完成这 3 个简单的操作(Pull、Tag、Push)呢?似乎 kaniko 和 jib 不是办法。

    我不想订购 VM 只是为了让 docker 守护程序来执行这些操作。而且我也知道 Jib 能够推送到多个注册表。但它不能只重命名图像。

    也与去年的这个问题有关:
    Clone an image from a docker registry to another

    问候,莱昂

    最佳答案

    Docker Registry 提供了一个 HTTP API ,因此您可以使用这些方法来拉取和推送图像。

    有几个库提供了更高的抽象层( docker-registry-client in Godocker-registry-client in Js 等)。

    无论如何,流量将是

  • Pulling an image涉及:
  • Retrieve manifests来自 registry-x.com/repo/app1:v1-snapshot .
  • Download list 上命名的层(blob)。
  • Pushing an image涉及:
  • 上传您之前下载的所有图层
  • 使用新版本修改原始 list
  • 上传新 list
  • 关于kubernetes - 将镜像从 Registry Y 拉取、标记和推送到 Registry X,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54914127/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com