kos*_*hok 6 bash manifest docker
我有一个名为 的多架构 docker 映像someserver:5000/my_image:v1。它被上传到一些本地注册表。图像已为 2 个平台制作:linux/arm64和linux/amd64。
我想将此图像重命名为someserver:5000/my_release_image:v1. 如果它是常规图像我可以:
docker pull someserver:5000/my_image:v1
docker tag someserver:5000/my_image:v1 someserver:5000/my_release_image:v1
docker push someserver:5000/my_release_image:v1
Run Code Online (Sandbox Code Playgroud)
但这是由 完成的多架构图像docker buildx build --platform <ARCHITECTURES> --pull --push ...,因此在拉取它时我得到了架构的修订版。
如何重新标记多架构映像?
当我写这篇文章时,我找到了解决方案。
一开始我还没有真正了解多架构镜像是如何创建的以及docker中的“清单”是什么。我认为某些多架构镜像someserver:5000/my_image:v1就像一个超级镜像,但首先是注册表上someserver:5000/my_image:v1存储库的标签。有一些清单是这样标记的。它“指向”一个或多个真实图像(如果我错了,请纠正我)。my_imagesomeserver:5000
someserver:5000/my_image:1和someserver:5000/my_image:2。将它们推入您的注册表:docker push someserver:5000/my_image:1
docker push someserver:5000/my_image:2
Run Code Online (Sandbox Code Playgroud)
someserver:5000/my_release_image:v1:docker manifest create someserver:5000/my_release_image:v1 \
--amend someserver:5000/my_image:1 \
--amend someserver:5000/my_image:2
Run Code Online (Sandbox Code Playgroud)
docker manifest push someserver:5000/my_release_image:v1
Run Code Online (Sandbox Code Playgroud)
假设您的注册表上的存储库中latest已经有一个带有标签的清单,但您想将其“重命名”为my_imagesomeserver:5000/someserver:5000/my_release_image:v1
docker manifest inspect someserver:5000/my_image:latest
Run Code Online (Sandbox Code Playgroud)
它会给你这样的东西:
{
"schemaVersion": 2,
"mediaType": "application/vnd.docker.distribution.manifest.list.v2+json",
"manifests": [
{
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
"size": 1,
"digest": "sha256:long_long_hex_number_1",
"platform": {
"architecture": "arch1",
"os": "linux"
}
},
{
"mediaType": "application/vnd.docker.distribution.manifest.v2+json",
"size": 13735,
"digest": "sha256:long_long_hex_number_2",
"platform": {
"architecture": "arch2",
"os": "linux"
}
}
]
}
Run Code Online (Sandbox Code Playgroud)
docker manifest create someserver:5000/my_release_image:v1 \
--amend someserver:5000/my_image@sha256:long_long_hex_number_1 \
--amend someserver:5000/my_image@sha256:long_long_hex_number_2
Run Code Online (Sandbox Code Playgroud)
docker manifest push someserver:5000/my_release_image:v1
Run Code Online (Sandbox Code Playgroud)
docker manifest rm someserver:5000/my_image:latest
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1766 次 |
| 最近记录: |