我有一个名为someserver:5000/my_image:v1的多拱码头图像。它被上传到某个本地注册中心。已经为两个平台制作了图像: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但是这是一个由docker buildx build --platform <ARCHITECTURES> --pull --push ...完成的多弓图像,所以在提取它的同时,我得到了对我的体系结构的修改。
我怎样才能保留一个多架构的图像?
发布于 2021-12-10 15:11:22
当我写这篇文章的时候,我找到了一个解决方案。
在开始的时候,我还没有真正了解到如何创建多层图像,以及在docker中出现了什么“清单”。我认为一些多弓映像someserver:5000/my_image:v1就像一个超级映像,但首先,someserver:5000/my_image:v1是someserver:5000注册表上存储库my_image的标记。有一些明显的标记是这样的。它“点”在一个或几个真实的图像上(如果我错了,请纠正我)。
码头舱单解决方案
解决方案1(如果您的图像存储在本地或在线)
someserver:5000/my_image:1和someserver:5000/my_image:2。将它们推入您的注册表:docker push someserver:5000/my_image:1
docker push someserver:5000/my_image:2someserver: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 docker manifest push someserver:5000/my_release_image:v1解决方案2(如果您想要重命名清单)
假设在您的latest注册中心的my_image存储库中已经有一个带有标记someserver:5000/的清单,但是您希望将它“重命名”为someserver:5000/my_release_image:v1
docker manifest inspect someserver:5000/my_image:latest它会给你这样的东西:
{
"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"
}
}
]
}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_2docker manifest push someserver:5000/my_release_image:v1docker manifest rm someserver:5000/my_image:latesthttps://stackoverflow.com/questions/70294270
复制相似问题