首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将图像推送到注册表并保存清单列表

将图像推送到注册表并保存清单列表
EN

Stack Overflow用户
提问于 2022-06-08 16:53:02
回答 1查看 375关注 0票数 0

我正在尝试将一堆图像推送到我在Amazon中的公共注册表。这些映像应该可以在不同架构(amd64、arm、ppc64le、s390x)的主机上使用。

基本上,在AWS登录后,我会在本地拉出我需要的图像,标记它们并将它们推送到$MY_REGISTRY

代码语言:javascript
复制
podman pull alpine
podman tag alpine $MY_REGISTRY/alpine:latest
podman push $MY_REGISTRY/alpine:latest

但是,这些图像只能在amd64主机上使用.

我注意到原始图像保存了清单列表:

代码语言:javascript
复制
podman manifest inspect alpine
{
    "schemaVersion": 2,
    "mediaType": "application/vnd.docker.distribution.manifest.list.v2+json",
    "manifests": [
        {
            "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
            "size": 528,
            "digest": "sha256:4ff3ca91275773af45cb4b0834e12b7eb47d1c18f770a0b151381cd227f4c253",
            "platform": {
                "architecture": "amd64",
                "os": "linux"
            }
        },
        {
            "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
            "size": 528,
            "digest": "sha256:3c66139adbd2513f9fc56eff206513ffc8356b282bed31a4e74c7eb926b850aa",
            "platform": {
                "architecture": "arm",
                "os": "linux",
                "variant": "v6"
            }
        },
        {
            "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
            "size": 528,
            "digest": "sha256:0615cdd745d0b78e7e6ac3a7b1f02e4daefa664eae0324120955f4e4c91bea3f",
            "platform": {
                "architecture": "arm",
                "os": "linux",
                "variant": "v7"
            }
        },
        {
            "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
            "size": 528,
            "digest": "sha256:c3c58223e2af75154c4a7852d6924b4cc51a00c821553bbd9b3319481131b2e0",
            "platform": {
                "architecture": "arm64",
                "os": "linux",
                "variant": "v8"
            }
        },
        {
            "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
            "size": 528,
            "digest": "sha256:72af6266bafde8c78d5f20a2a85d0576533ce1ecd6ed8bcf7baf62a743f3b24d",
            "platform": {
                "architecture": "386",
                "os": "linux"
            }
        },
        {
            "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
            "size": 528,
            "digest": "sha256:0f3aeb63bb71ccd3ba0020772f5617e50946a4f2713953c3f494203f1544ea03",
            "platform": {
                "architecture": "ppc64le",
                "os": "linux"
            }
        },
        {
            "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
            "size": 528,
            "digest": "sha256:83167bc8418071fc178d191ed604f44792c94ad3c3ac26350c29d2445f6a9644",
            "platform": {
                "architecture": "s390x",
                "os": "linux"
            }
        }
    ]
}

但是,标记的图像没有:

代码语言:javascript
复制
podman manifest inspect $MY_REGISTRY/alpine
WARN[0001] Warning! The manifest type application/vnd.docker.distribution.manifest.v2+json is not a manifest list but a single image. 
{
    "schemaVersion": 2,
    "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
    "config": {
        "mediaType": "application/vnd.docker.container.image.v1+json",
        "size": 1472,
        "digest": "sha256:e66264b98777e12192600bf9b4d663655c98a090072e1bab49e233d7531d1294"
    },
    "layers": [
        {
            "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",
            "size": 2897375,
            "digest": "sha256:ff309671352dd8bb4f487772b942ab34acb26811d2ab2b6fa659a9ef84b11cb4"
        }
    ]
}

我如何标记图像并保留清单列表,以便当我将它推到注册表时,它可以在任何架构上使用?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-08 18:13:07

将图像解压缩清单到您的本地平台(或至少在码头)。有各种工具可以在注册中心之间复制图像,包括谷歌的吊车、RedHat的斯斯科皮奥和my 雷格。例如使用regclient的regctl:

代码语言:javascript
复制
$ regctl image copy alpine:latest localhost:5000/library/alpine:latest

$ regctl manifest get localhost:5000/library/alpine:latest
Name:        localhost:5000/library/alpine:latest
MediaType:   application/vnd.docker.distribution.manifest.list.v2+json
Digest:      sha256:686d8c9dfa6f3ccfc8230bc3178d23f84eeaf7e457f36f271ab1acc53015037c
             
Manifests:   
             
  Name:      localhost:5000/library/alpine:latest@sha256:4ff3ca91275773af45cb4b0834e12b7eb47d1c18f770a0b151381cd227f4c253
  Digest:    sha256:4ff3ca91275773af45cb4b0834e12b7eb47d1c18f770a0b151381cd227f4c253
  MediaType: application/vnd.docker.distribution.manifest.v2+json
  Platform:  linux/amd64
             
  Name:      localhost:5000/library/alpine:latest@sha256:3c66139adbd2513f9fc56eff206513ffc8356b282bed31a4e74c7eb926b850aa
  Digest:    sha256:3c66139adbd2513f9fc56eff206513ffc8356b282bed31a4e74c7eb926b850aa
  MediaType: application/vnd.docker.distribution.manifest.v2+json
  Platform:  linux/arm/v6
             
  Name:      localhost:5000/library/alpine:latest@sha256:0615cdd745d0b78e7e6ac3a7b1f02e4daefa664eae0324120955f4e4c91bea3f
  Digest:    sha256:0615cdd745d0b78e7e6ac3a7b1f02e4daefa664eae0324120955f4e4c91bea3f
  MediaType: application/vnd.docker.distribution.manifest.v2+json
  Platform:  linux/arm/v7
             
  Name:      localhost:5000/library/alpine:latest@sha256:c3c58223e2af75154c4a7852d6924b4cc51a00c821553bbd9b3319481131b2e0
  Digest:    sha256:c3c58223e2af75154c4a7852d6924b4cc51a00c821553bbd9b3319481131b2e0
  MediaType: application/vnd.docker.distribution.manifest.v2+json
  Platform:  linux/arm64
             
  Name:      localhost:5000/library/alpine:latest@sha256:72af6266bafde8c78d5f20a2a85d0576533ce1ecd6ed8bcf7baf62a743f3b24d
  Digest:    sha256:72af6266bafde8c78d5f20a2a85d0576533ce1ecd6ed8bcf7baf62a743f3b24d
  MediaType: application/vnd.docker.distribution.manifest.v2+json
  Platform:  linux/386
             
  Name:      localhost:5000/library/alpine:latest@sha256:0f3aeb63bb71ccd3ba0020772f5617e50946a4f2713953c3f494203f1544ea03
  Digest:    sha256:0f3aeb63bb71ccd3ba0020772f5617e50946a4f2713953c3f494203f1544ea03
  MediaType: application/vnd.docker.distribution.manifest.v2+json
  Platform:  linux/ppc64le
             
  Name:      localhost:5000/library/alpine:latest@sha256:83167bc8418071fc178d191ed604f44792c94ad3c3ac26350c29d2445f6a9644
  Digest:    sha256:83167bc8418071fc178d191ed604f44792c94ad3c3ac26350c29d2445f6a9644
  MediaType: application/vnd.docker.distribution.manifest.v2+json
  Platform:  linux/s390x
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72549515

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档