从注册表Y中拉出,标记并推送图像到注册表X.

问题描述 投票:1回答:1

目前,我们的CI / CD环境是基于Kubernetes的云。由于性能优势,Kubernetes Cloud Providers最近删除了docker deamon。例如,Google Kubernetes Engine或IBM Cloud Kubernetes仅具有Containerd运行时,可以运行但不能构建容器映像。

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

问题出现了:

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

所以Image“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和工作不是一种方式。

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

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

问候,莱昂

kubernetes continuous-integration docker-registry jib kaniko
1个回答
2
投票

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

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

在任何情况下,流程都将是

© www.soinside.com 2019 - 2024. All rights reserved.