我偶尔需要对 docker 镜像进行一些手动升级。
我使用的流程是:
$ docker pull registry.digitalocean.com/foo/bar:dev-123
$ docker tag registry.digitalocean.com/foo/bar:dev-123 registry.digitalocean.com/foo/bar:prd-123
$ docker push registry.digitalocean.com/foo/bar:prd-123
Run Code Online (Sandbox Code Playgroud)
这涉及将图像拉到我的本地主机,在那里标记它,然后再次推送它。
在我看来,应该有一种方法可以在远程存储库中标记图像,而无需上述操作,但我在谷歌上找不到答案。
您可以使用skopeo来执行此操作,如下所示:
skopeo copy docker://some/image:oldtag docker://some/image:newtag
Run Code Online (Sandbox Code Playgroud)
例如,如果我有:
$ skopeo list-tags docker://larsks/skopeo-example
{
"Repository": "docker.io/larsks/skopeo-example",
"Tags": [
"latest"
]
}
Run Code Online (Sandbox Code Playgroud)
我可以跑:
$ skopeo copy docker://larsks/skopeo-example:latest docker://larsks/skopeo-example:newtag
Getting image source signatures
Copying blob df20fa9351a1 skipped: already exists
Copying config 0bce593a08 [--------------------------------------] 0.0b / 741.0b
Writing manifest to image destination
Storing signatures
Run Code Online (Sandbox Code Playgroud)
现在我有:
$ skopeo list-tags docker://larsks/skopeo-example
{
"Repository": "docker.io/larsks/skopeo-example",
"Tags": [
"latest",
"newtag"
]
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3627 次 |
| 最近记录: |