在私人注册表(myregistry.com)上,假设我的图像标记为'v1.2.3'.然后我推动它:
docker push myregistry.com/myimage:v1.2.3
如果我想关联另一个标签,说'staging',并将该标签推送到我的注册表,我可以:
docker tag myregistry.com/myimage:v1.2.3 myregistry.com/myimage:staging
docker push myregistry.com/myimage:staging
虽然这有效,但第二个docker push仍然会遍历每个图像,试图推送它(尽管跳过上传).有没有更好的方法来添加远程标签?
现在已经弃用了docker注册表的V1,我们启动了一个没有太多待办事项的v2私有仓库.问题在于我们依靠许多v1 API来管理部署标记.
截至目前,我们可以轻松列出标签:
> curl https://repo-dns:5000/username/reponame/tags/list
Run Code Online (Sandbox Code Playgroud)
但是删除标签似乎包含的不仅仅是标签,而且似乎失败了:
> curl -X DELETE https://repo-dns:5000/v2/username/reponame/manifests/tagtodelete
{"errors":[{"code":"UNSUPPORTED","message":"The operation is unsupported."}]}
Run Code Online (Sandbox Code Playgroud)
还不清楚如何添加新标签 - 它过去常常像:
> echo my_image_id |curl -X PUT https://repo-dns:5000/v1/repositories/username/reponame/tags/newtag
Run Code Online (Sandbox Code Playgroud)
我查看了API文档,但不清楚如何做到这一点.
是否有可能继续添加和删除标签,如果是这样,如何?
我的远程 docker 注册表中有一个图像:
xx.xx.xx.xx:5000/library/ruby:2.2.1
Run Code Online (Sandbox Code Playgroud)
有没有快速的方法或现有的命令来重命名它?
我知道我可以通过执行实现这个docker pull它的本地和将其重命名docker tag,然后docker push再。
docker pull xx.xx.xx.xx:5000/library/ruby:2.2.1
docker tag xx.xx.xx.xx:5000/library/ruby:2.2.1 xx.xx.xx:5000/library/new_name:latest
docker push xx.xx.xx.xx:5000/library/new_name:latest
Run Code Online (Sandbox Code Playgroud)
但是由于拉取和推送图像需要时间,我想知道是否有一种快速重命名的方法?