如何在Dockerregistryv2中标记图像

我们在CI-CD中有逻辑(通过REST)将映像映射到最新(如果testing成功)。 这工作在registryv1。

现在转移到V2 API,我无法find在文档中如何“添加”标记到现有的图像在registry..我在一个步骤,可以带来一些分级图像的“清单”,但不知道如何添加标签和http-post。 试图发送下面的input

  1. “标签”:“分期”,“最新”,

  2. “标签”:[“舞台”,“最新”],等等

    {“schemaVersion”:1,“name”:“configservice”,“tag”:“staging”,“architecture”:“amd64”,“fsLayers”:[….

如果您有支持清单模式版本2的Docker Registry,那么您可以在新标签下上传现有映像的清单。

例如,假设您要标记最新版本的busybox图像。 步骤是:

下载现有的清单:

 curl '<registry_url>/v2/mybusybox/manifests/latest' \ -H 'accept: application/vnd.docker.distribution.manifest.v2+json' \ > manifest.json 

以下是清单可能的样子(注意schemaVersion是2):

 { "schemaVersion": 2, "mediaType": "application/vnd.docker.distribution.manifest.v2+json", "config": { "mediaType": "application/octet-stream", "size": 1459, "digest": "sha256:2b8fd9751c4c0f5dd266fcae00707e67a2545ef34f9a29354585f93dac906749" }, "layers": [ { "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip", "size": 667590, "digest": "sha256:8ddc19f16526912237dd8af81971d5e4dd0587907234be2b83e249518d5b673f" } ] } 

上传清单在一个新的标签:

 curl -XPUT '<registry_url>/v2/mybusybox/manifests/new_tag' \ -H 'content-type: application/vnd.docker.distribution.manifest.v2+json' \ -d '@manifest.json' 

在这篇文章中给出了详细的分步指南。

这不是你的问题的直接答案,但我一直做以下…

 docker pull myimage:staging docker run myimage:staging test docker tag myimage:staging myimage:release docker push myimage:release