how to tag image in docker registry v2

做~自己de王妃 提交于 2019-12-20 12:05:42

问题


We have logic in our CI-CD that tags (via REST) staging image to latest (if tests are successful). This worked on registry v1.

now moved to v2 api, and I can't find in documentation how to "add" tags to existing image in registry..I'm in a step that can bring the "manifest" of some staging image, but not sure how to add tag and http-post it. tried to send the below input

  1. "tag": "staging","latest",

  2. "tag": ["staging","latest"], and more

    { "schemaVersion": 1, "name": "configservice", "tag": "staging", "architecture": "amd64", "fsLayers": [....


回答1:


If you have Docker Registry that supports manifest schema version 2, you can just upload the manifest of an existing image under a new tag.

For example let's assume that you want to tag latest version of busybox image. The steps would be:

Download the existing manifest:

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

Here's what the manifest might look like (notice that schemaVersion is 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"
      }
   ]
}

Upload the manifest under a new tag:

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

Detailed step-by-step guide is give in this post.




回答2:


This isn't a direct answer to your question, but I have always done the following...

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



回答3:


I just wanted to add, since this came up in my search results, that Google Container Registry includes a command to do this directly.

gcloud container images add-tag gcr.io/project/image:old-tag gcr.io/project/image:new-tag

The workflow described by wheleph above worked, but resulted in the creation of a new container rather than applying an additional tag to the existing one.



来源:https://stackoverflow.com/questions/37134929/how-to-tag-image-in-docker-registry-v2

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!