从 Registry Y 拉取、标记和推送镜像到 Registry X
Pull, Tag and Push an Image from Registry Y to Registry X
目前,我们的 CI/CD 环境是基于云的 Kubernetes。
由于性能优势,Kubernetes Cloud Providers 最近删除了 docker 守护进程。例如 Google Kubernetes Engine 或 IBM Cloud Kubernetes 仅具有 Containerd 运行 时间,运行 而不是 build 容器图像。
kaniko or jib 等许多工具可以解决这个问题。它们提供了一种无需 docker 守护进程即可非常有效地构建 docker 图像的方法。
问题来了:
- Image "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 个简单的操作(拉、标记、推)?似乎 kaniko 和 jib 不是办法。
我不想订购 VM 只是为了获得 docker 守护程序来执行这些操作。而且我还知道 Jib 能够推送到多个注册中心。但它不能只重命名图像。
也与去年的这个问题有关:
Clone an image from a docker registry to another
此致,莱昂
Docker 注册表提供了一个 HTTP API,因此您可以使用这些方法来拉取和推送图像。
有几个库提供了更高的抽象层(docker-registry-client in Go, docker-registry-client in Js,等等)。
无论如何,流量都会
-
- Retrieve manifests 来自
registry-x.com/repo/app1:v1-snapshot
.
- Download 个在清单中命名的层(blob)。
-
- 上传您之前下载的所有图层
- 使用新版本修改原始清单
- 上传新清单
目前,我们的 CI/CD 环境是基于云的 Kubernetes。 由于性能优势,Kubernetes Cloud Providers 最近删除了 docker 守护进程。例如 Google Kubernetes Engine 或 IBM Cloud Kubernetes 仅具有 Containerd 运行 时间,运行 而不是 build 容器图像。
kaniko or jib 等许多工具可以解决这个问题。它们提供了一种无需 docker 守护进程即可非常有效地构建 docker 图像的方法。
问题来了:
- Image "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 个简单的操作(拉、标记、推)?似乎 kaniko 和 jib 不是办法。
我不想订购 VM 只是为了获得 docker 守护程序来执行这些操作。而且我还知道 Jib 能够推送到多个注册中心。但它不能只重命名图像。
也与去年的这个问题有关: Clone an image from a docker registry to another
此致,莱昂
Docker 注册表提供了一个 HTTP API,因此您可以使用这些方法来拉取和推送图像。
有几个库提供了更高的抽象层(docker-registry-client in Go, docker-registry-client in Js,等等)。
无论如何,流量都会
-
- Retrieve manifests 来自
registry-x.com/repo/app1:v1-snapshot
. - Download 个在清单中命名的层(blob)。
- Retrieve manifests 来自
-
- 上传您之前下载的所有图层
- 使用新版本修改原始清单
- 上传新清单