kubernetes - 将镜像从注册表 Y 拉取、标记并推送到注册表 X

标签 kubernetes continuous-integration docker-registry jib kaniko

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

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

问题来了:

  1. 图像“registry-x.com/repo/app1:v1-snapshot”从 CI 中的 jib 构建到registry-x。
  2. 镜像“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 deamon 的情况下完成这 3 个简单的操作(Pull、Tag、Push)呢?看来 kaniko 和 jib 不是一个办法。

我不想订购虚拟机只是为了让 docker 守护进程来执行这些操作。我还知道 Jib 能够推送到多个注册表。但它不能仅仅重命名图像。

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

问候,莱昂

最佳答案

Docker 注册表提供 HTTP API ,因此您可以使用这些方法来拉取和推送图像。

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

无论如何,流程都是

关于kubernetes - 将镜像从注册表 Y 拉取、标记并推送到注册表 X,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54914127/

相关文章:

git - 让 buildbot 轮询 git 存储库以获取新提交?

node.js - 部署Docker镜像

java - 优雅地关闭在 Kubernetes 中运行的 Spring 应用程序

kubernetes - 加入 x509 : certificate has expired or is not yet valid

Jenkins 构建队列限制

continuous-integration - TFS 2010 门禁签到及专属结账服务

Docker:google/docker-registry 容器使用情况

kubernetes - Kubernetes 上的私有(private) docker 注册表

tensorflow - 在本地分发 Tensorflow 训练的最简单方法?

kubernetes - Kubernetes守护进程监听特定端口