Skip to content

Instantly share code, notes, and snippets.

@rbo
Last active October 30, 2020 10:41
Show Gist options
  • Save rbo/2bcae948fe5e278fc68d12c365d20af1 to your computer and use it in GitHub Desktop.
Save rbo/2bcae948fe5e278fc68d12c365d20af1 to your computer and use it in GitHub Desktop.
[containers / podman] podman push twice results in two different digests #6496

Env

# podman version
Version:      2.1.1
API Version:  2.0.0
Go Version:   go1.15.2
Built:        Wed Oct  7 16:21:42 2020
OS/Arch:      linux/arm64

[root@ip-172-31-28-122 multi-arch-container-image]# cat /etc/*rel*
Fedora release 33 (Thirty Three)
NAME=Fedora
VERSION="33 (Cloud Edition)"
ID=fedora
VERSION_ID=33
VERSION_CODENAME=""
PLATFORM_ID="platform:f33"
PRETTY_NAME="Fedora 33 (Cloud Edition)"
ANSI_COLOR="0;38;2;60;110;180"
LOGO=fedora-logo-icon
CPE_NAME="cpe:/o:fedoraproject:fedora:33"
HOME_URL="https://fedoraproject.org/"
DOCUMENTATION_URL="https://docs.fedoraproject.org/en-US/fedora/f33/system-administrators-guide/"
SUPPORT_URL="https://fedoraproject.org/wiki/Communicating_and_getting_help"
BUG_REPORT_URL="https://bugzilla.redhat.com/"
REDHAT_BUGZILLA_PRODUCT="Fedora"
REDHAT_BUGZILLA_PRODUCT_VERSION=33
REDHAT_SUPPORT_PRODUCT="Fedora"
REDHAT_SUPPORT_PRODUCT_VERSION=33
PRIVACY_POLICY_URL="https://fedoraproject.org/wiki/Legal:PrivacyPolicy"
VARIANT="Cloud Edition"
VARIANT_ID=cloud
cat: /etc/prelink.conf.d: Is a directory
Fedora release 33 (Thirty Three)
Fedora release 33 (Thirty Three)
cpe:/o:fedoraproject:fedora:33

[root@ip-172-31-28-122 multi-arch-container-image]# podman info --debug
host:
  arch: arm64
  buildahVersion: 1.16.1
  cgroupManager: systemd
  cgroupVersion: v2
  conmon:
    package: conmon-2.0.21-3.fc33.aarch64
    path: /usr/bin/conmon
    version: 'conmon version 2.0.21, commit: 66d50d2f6c81e28bacd99ee8e8d222f028eef63f'
  cpus: 2
  distribution:
    distribution: fedora
    version: "33"
  eventLogger: journald
  hostname: ip-172-31-28-122.eu-central-1.compute.internal
  idMappings:
    gidmap: null
    uidmap: null
  kernel: 5.8.15-301.fc33.aarch64
  linkmode: dynamic
  memFree: 103751680
  memTotal: 984297472
  ociRuntime:
    name: crun
    package: crun-0.15-5.fc33.aarch64
    path: /usr/bin/crun
    version: |-
      crun version 0.15
      commit: 56ca95e61639510c7dbd39ff512f80f626404969
      spec: 1.0.0
      +SYSTEMD +SELINUX +APPARMOR +CAP +SECCOMP +EBPF +YAJL
  os: linux
  remoteSocket:
    path: /run/podman/podman.sock
  rootless: false
  slirp4netns:
    executable: ""
    package: ""
    version: ""
  swapFree: 0
  swapTotal: 0
  uptime: 17h 55m 20.94s (Approximately 0.71 days)
registries:
  search:
  - registry.fedoraproject.org
  - registry.access.redhat.com
  - registry.centos.org
  - docker.io
store:
  configFile: /etc/containers/storage.conf
  containerStore:
    number: 1
    paused: 0
    running: 0
    stopped: 1
  graphDriverName: overlay
  graphOptions:
    overlay.mountopt: nodev,metacopy=on
  graphRoot: /var/lib/containers/storage
  graphStatus:
    Backing Filesystem: extfs
    Native Overlay Diff: "false"
    Supports d_type: "true"
    Using metacopy: "true"
  imageStore:
    number: 11
  runRoot: /var/run/containers/storage
  volumePath: /var/lib/containers/storage/volumes
version:
  APIVersion: 2.0.0
  Built: 1602087702
  BuiltTime: Wed Oct  7 16:21:42 2020
  GitCommit: ""
  GoVersion: go1.15.2
  OsArch: linux/arm64
  Version: 2.1.1
  

# rpm -q podman
podman-2.1.1-12.fc33.aarch64

Build container

[root@ip-172-31-28-122 ~]# git clone https://github.com/openshift-examples/multi-arch-container-image.git
Cloning into 'multi-arch-container-image'...
remote: Enumerating objects: 19, done.
remote: Counting objects: 100% (19/19), done.
remote: Compressing objects: 100% (18/18), done.
remote: Total 19 (delta 5), reused 3 (delta 0), pack-reused 0
Unpacking objects: 100% (19/19), 8.93 KiB | 2.98 MiB/s, done.
[root@ip-172-31-28-122 ~]# cd multi-arch-container-image/
[root@ip-172-31-28-122 multi-arch-container-image]# ls
Containerfile  hello-world.go  LICENSE  README.md
[root@ip-172-31-28-122 multi-arch-container-image]# podman build -t quay.io/openshift-examples/multi-arch-container-image:aarch64 .
STEP 1: FROM registry.access.redhat.com/ubi8/go-toolset AS builder
Getting image source signatures
Copying blob 526c8ff91dc8 done
Copying blob b0a95cd4842d done
Copying blob 621e38c60fd0 done
Copying blob d57fe082144d done
Copying blob 7d6ea16a444e done
Copying config 8eceee3f9b done
Writing manifest to image destination
Storing signatures
STEP 2: COPY hello-world.go /tmp/src/
--> 1bb0caa885d
STEP 3: USER 0
--> 9909b67b3ba
STEP 4: RUN chown -R 1001:0 /tmp/src
--> 86cc03d3618
STEP 5: USER 1001
--> 0d1d9b62254
STEP 6: RUN  /usr/libexec/s2i/assemble
/tmp/src ~
~
--> d1cbdec06ed
STEP 7: FROM registry.access.redhat.com/ubi8/ubi-minimal AS runner
Getting image source signatures
Copying blob c9d09b98dfbc done
Copying blob 3dbd0a0583b6 done
Copying config a8d933bd29 done
Writing manifest to image destination
Storing signatures
STEP 8: RUN mkdir /app
--> ca8783c705f
STEP 9: WORKDIR /app
--> 0db56c984a5
STEP 10: COPY --from=builder /opt/app-root/gobinary /app/main
--> b3069df3113
STEP 11: ENTRYPOINT ["/app/main"]
STEP 12: COMMIT quay.io/openshift-examples/multi-arch-container-image:aarch64
--> 2e310053a0c
2e310053a0c44d01547a01dd1a69ccdcf84703311d0dc8e4467e766b5ebf5975
[root@ip-172-31-28-122 multi-arch-container-image]# podman run -ti quay.io/openshift-examples/multi-arch-container-image:aarch64
hello world from architecure: aarch64

inspect after build

[root@ip-172-31-28-122 multi-arch-container-image]# podman inspect quay.io/openshift-examples/multi-arch-container-image:aarch64
[
    {
        "Id": "2e310053a0c44d01547a01dd1a69ccdcf84703311d0dc8e4467e766b5ebf5975",
        "Digest": "sha256:c7175bc48c00faa0848c648e70d8da042f0562dac493d8c02dc6c243723c6691",
        "RepoTags": [
            "quay.io/openshift-examples/multi-arch-container-image:aarch64"
        ],
        "RepoDigests": [
            "quay.io/openshift-examples/multi-arch-container-image@sha256:c7175bc48c00faa0848c648e70d8da042f0562dac493d8c02dc6c243723c6691"
        ],
        "Parent": "",
        "Comment": "Imported from -",
        "Created": "2020-10-30T09:14:26.159823906Z",
        "Config": {
            "Env": [
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
                "container=oci"
            ],
            "Entrypoint": [
                "/app/main"
            ],
            "WorkingDir": "/app",
            "Labels": {
                "architecture": "arm64",
                "build-date": "2020-09-01T19:43:02.728394",
                "com.redhat.build-host": "arm64-osbs-13.prod.osbs.eng.bos.redhat.com",
                "com.redhat.component": "ubi8-minimal-container",
                "com.redhat.license_terms": "https://www.redhat.com/en/about/red-hat-end-user-license-agreements#UBI",
                "description": "The Universal Base Image Minimal is a stripped down image that uses microdnf as a package manager. This base image is freely redistributable, but Red Hat only supports Red Hat technologies through subscriptions for Red Hat products. This image is maintained by Red Hat and updated regularly.",
                "distribution-scope": "public",
                "io.buildah.version": "1.16.1",
                "io.k8s.description": "The Universal Base Image Minimal is a stripped down image that uses microdnf as a package manager. This base image is freely redistributable, but Red Hat only supports Red Hat technologies through subscriptions for Red Hat products. This image is maintained by Red Hat and updated regularly.",
                "io.k8s.display-name": "Red Hat Universal Base Image 8 Minimal",
                "io.openshift.expose-services": "",
                "io.openshift.tags": "minimal rhel8",
                "maintainer": "Red Hat, Inc.",
                "name": "ubi8-minimal",
                "release": "349",
                "summary": "Provides the latest release of the minimal Red Hat Universal Base Image 8.",
                "url": "https://access.redhat.com/containers/#/registry.access.redhat.com/ubi8-minimal/images/8.2-349",
                "vcs-ref": "34bc4001b02c4f75e89663e1f8407a08af05f8ab",
                "vcs-type": "git",
                "vendor": "Red Hat, Inc.",
                "version": "8.2"
            }
        },
        "Version": "",
        "Author": "",
        "Architecture": "arm64",
        "Os": "linux",
        "Size": 170144925,
        "VirtualSize": 170144925,
        "GraphDriver": {
            "Name": "overlay",
            "Data": {
                "LowerDir": "/var/lib/containers/storage/overlay/4e632322486cb3effc8d20ed221356fe088535ec695ac0e2b2ae693a546390a0/diff:/var/lib/containers/storage/overlay/1bbdba6ce22fb317820c489adeba0fea875a126e7083de773de6910c996aa8d1/diff:/var/lib/containers/storage/overlay/e48e4f4d88e89f91f675d8536f3a15411217a14c7b5f4b3e3566c7d223f7406e/diff",
                "UpperDir": "/var/lib/containers/storage/overlay/f6cc3d1c1a85aece08037844c1ed2981625d8e56bdc2d53024a95c72bd1780a4/diff",
                "WorkDir": "/var/lib/containers/storage/overlay/f6cc3d1c1a85aece08037844c1ed2981625d8e56bdc2d53024a95c72bd1780a4/work"
            }
        },
        "RootFS": {
            "Type": "layers",
            "Layers": [
                "sha256:e48e4f4d88e89f91f675d8536f3a15411217a14c7b5f4b3e3566c7d223f7406e",
                "sha256:94dc982a8d06a901292f506307657022256550d27ab96460f0f6f167b49fa967",
                "sha256:2cb2050899f2a523891a295636e40a61ca6bbd447ab84c9458597e31a01e9944",
                "sha256:1e4745a2c8bb3b7934193dc1b0e76a3b9f6136e1fd9a1e06167521f8ed33737a"
            ]
        },
        "Labels": {
            "architecture": "arm64",
            "build-date": "2020-09-01T19:43:02.728394",
            "com.redhat.build-host": "arm64-osbs-13.prod.osbs.eng.bos.redhat.com",
            "com.redhat.component": "ubi8-minimal-container",
            "com.redhat.license_terms": "https://www.redhat.com/en/about/red-hat-end-user-license-agreements#UBI",
            "description": "The Universal Base Image Minimal is a stripped down image that uses microdnf as a package manager. This base image is freely redistributable, but Red Hat only supports Red Hat technologies through subscriptions for Red Hat products. This image is maintained by Red Hat and updated regularly.",
            "distribution-scope": "public",
            "io.buildah.version": "1.16.1",
            "io.k8s.description": "The Universal Base Image Minimal is a stripped down image that uses microdnf as a package manager. This base image is freely redistributable, but Red Hat only supports Red Hat technologies through subscriptions for Red Hat products. This image is maintained by Red Hat and updated regularly.",
            "io.k8s.display-name": "Red Hat Universal Base Image 8 Minimal",
            "io.openshift.expose-services": "",
            "io.openshift.tags": "minimal rhel8",
            "maintainer": "Red Hat, Inc.",
            "name": "ubi8-minimal",
            "release": "349",
            "summary": "Provides the latest release of the minimal Red Hat Universal Base Image 8.",
            "url": "https://access.redhat.com/containers/#/registry.access.redhat.com/ubi8-minimal/images/8.2-349",
            "vcs-ref": "34bc4001b02c4f75e89663e1f8407a08af05f8ab",
            "vcs-type": "git",
            "vendor": "Red Hat, Inc.",
            "version": "8.2"
        },
        "Annotations": {},
        "ManifestType": "application/vnd.oci.image.manifest.v1+json",
        "User": "",
        "History": [
            {
                "created": "2020-09-01T19:43:21.892046632Z",
                "comment": "Imported from -"
            },
            {
                "created": "2020-09-01T19:44:04.851415Z"
            },
            {
                "created": "2020-10-30T09:14:25.048030047Z",
                "created_by": "/bin/sh -c mkdir /app"
            },
            {
                "created": "2020-10-30T09:14:25.193220801Z",
                "created_by": "/bin/sh -c #(nop) WORKDIR /app",
                "empty_layer": true
            },
            {
                "created": "2020-10-30T09:14:26.000153386Z",
                "created_by": "/bin/sh -c #(nop) COPY file:c096b32ff9a57715fe317620fcdbef18b69f4a582adcba3149ee46b1bf25ea93 in /app/main "
            },
            {
                "created": "2020-10-30T09:14:26.160157876Z",
                "created_by": "/bin/sh -c #(nop) ENTRYPOINT [\"/app/main\"]",
                "empty_layer": true
            }
        ],
        "NamesHistory": []
    }
]

First push

Push

[root@ip-172-31-28-122 multi-arch-container-image]# podman --log-level=debug push --digestfile first-push.digest.txt quay.io/openshift-examples/multi-arch-container-image:aarch64
INFO[0000] podman filtering at log level debug
DEBU[0000] Called push.PersistentPreRunE(podman --log-level=debug push --digestfile first-push.digest.txt quay.io/openshift-examples/multi-arch-container-image:aarch64)
DEBU[0000] Reading configuration file "/usr/share/containers/containers.conf"
DEBU[0000] Merged system config "/usr/share/containers/containers.conf": &{Containers:{Devices:[] Volumes:[] ApparmorProfile:containers-default-0.22.0 Annotations:[] CgroupNS:private Cgroups:enabled DefaultCapabilities:[AUDIT_WRITE CHOWN DAC_OVERRIDE FOWNER FSETID KILL NET_BIND_SERVICE SETFCAP SETGID SETPCAP SETUID SYS_CHROOT] DefaultSysctls:[net.ipv4.ping_group_range=0 1] DefaultUlimits:[nproc=4194304:4194304] DefaultMountsFile: DNSServers:[] DNSOptions:[] DNSSearches:[] EnableLabeling:true Env:[PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin TERM=xterm] EnvHost:false HTTPProxy:false Init:false InitPath: IPCNS:private LogDriver:k8s-file LogSizeMax:-1 NetNS:bridge NoHosts:false PidsLimit:2048 PidNS:private SeccompProfile:/usr/share/containers/seccomp.json ShmSize:65536k TZ: Umask:0022 UTSNS:private UserNS:host UserNSSize:65536} Engine:{CgroupCheck:false CgroupManager:systemd ConmonEnvVars:[PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin] ConmonPath:[/usr/libexec/podman/conmon /usr/local/libexec/podman/conmon /usr/local/lib/podman/conmon /usr/bin/conmon /usr/sbin/conmon /usr/local/bin/conmon /usr/local/sbin/conmon /run/current-system/sw/bin/conmon] DetachKeys:ctrl-p,ctrl-q EnablePortReservation:true Env:[] EventsLogFilePath:/var/run/libpod/events/events.log EventsLogger:journald HooksDir:[/usr/share/containers/oci/hooks.d] ImageDefaultTransport:docker:// InfraCommand:/pause InfraImage:k8s.gcr.io/pause:3.2 InitPath:/usr/libexec/podman/catatonit LockType:shm MultiImageArchive:false Namespace: NetworkCmdPath: NoPivotRoot:false NumLocks:2048 OCIRuntime:crun OCIRuntimes:map[crun:[/usr/bin/crun /usr/sbin/crun /usr/local/bin/crun /usr/local/sbin/crun /sbin/crun /bin/crun /run/current-system/sw/bin/crun] kata:[/usr/bin/kata-runtime /usr/sbin/kata-runtime /usr/local/bin/kata-runtime /usr/local/sbin/kata-runtime /sbin/kata-runtime /bin/kata-runtime /usr/bin/kata-qemu /usr/bin/kata-fc] runc:[/usr/bin/runc /usr/sbin/runc /usr/local/bin/runc /usr/local/sbin/runc /sbin/runc /bin/runc /usr/lib/cri-o-runc/sbin/runc /run/current-system/sw/bin/runc]] PullPolicy:missing Remote:false RemoteURI: RemoteIdentity: ActiveService: ServiceDestinations:map[] RuntimePath:[] RuntimeSupportsJSON:[crun runc] RuntimeSupportsNoCgroups:[crun] RuntimeSupportsKVM:[kata kata-runtime kata-qemu kata-fc] SetOptions:{StorageConfigRunRootSet:false StorageConfigGraphRootSet:false StorageConfigGraphDriverNameSet:false StaticDirSet:false VolumePathSet:false TmpDirSet:false} SignaturePolicyPath:/etc/containers/policy.json SDNotify:false StateType:3 StaticDir:/var/lib/containers/storage/libpod StopTimeout:10 TmpDir:/var/run/libpod VolumePath:/var/lib/containers/storage/volumes} Network:{CNIPluginDirs:[/usr/libexec/cni /usr/lib/cni /usr/local/lib/cni /opt/cni/bin] DefaultNetwork:podman NetworkConfigDir:/etc/cni/net.d/}}
DEBU[0000] Using conmon: "/usr/bin/conmon"
DEBU[0000] Initializing boltdb state at /var/lib/containers/storage/libpod/bolt_state.db
DEBU[0000] Using graph driver overlay
DEBU[0000] Using graph root /var/lib/containers/storage
DEBU[0000] Using run root /var/run/containers/storage
DEBU[0000] Using static dir /var/lib/containers/storage/libpod
DEBU[0000] Using tmp dir /var/run/libpod
DEBU[0000] Using volume path /var/lib/containers/storage/volumes
DEBU[0000] Set libpod namespace to ""
DEBU[0000] [graphdriver] trying provided driver "overlay"
DEBU[0000] cached value indicated that overlay is supported
DEBU[0000] cached value indicated that metacopy is being used
DEBU[0000] cached value indicated that native-diff is not being used
WARN[0000] Not using native diff for overlay, this may cause degraded performance for building images: kernel has CONFIG_OVERLAY_FS_REDIRECT_DIR enabled
DEBU[0000] backingFs=extfs, projectQuotaSupported=false, useNativeDiff=false, usingMetacopy=true
DEBU[0000] Initializing event backend journald
DEBU[0000] using runtime "/usr/bin/runc"
DEBU[0000] using runtime "/usr/bin/crun"
WARN[0000] Error initializing configured OCI runtime kata: no valid executable found for OCI runtime kata: invalid argument
INFO[0000] Found CNI network podman (type=bridge) at /etc/cni/net.d/87-podman-bridge.conflist
WARN[0000] Default CNI network name podman is unchangeable
INFO[0000] Setting parallel job count to 7
DEBU[0000] parsed reference into "[overlay@/var/lib/containers/storage+/var/run/containers/storage:overlay.mountopt=nodev,metacopy=on]quay.io/openshift-examples/multi-arch-container-image:aarch64"
DEBU[0000] parsed reference into "[overlay@/var/lib/containers/storage+/var/run/containers/storage:overlay.mountopt=nodev,metacopy=on]@2e310053a0c44d01547a01dd1a69ccdcf84703311d0dc8e4467e766b5ebf5975"
DEBU[0000] Returning credentials from /run/containers/0/auth.json
DEBU[0000] Using registries.d directory /etc/containers/registries.d for sigstore configuration
DEBU[0000]  Using "default-docker" configuration
DEBU[0000]   Using file:///var/lib/containers/sigstore
DEBU[0000] Looking for TLS certificates and private keys in /etc/docker/certs.d/quay.io
DEBU[0000] Loading registries configuration "/etc/containers/registries.conf"
DEBU[0000] Using blob info cache at /var/lib/containers/cache/blob-info-cache-v1.boltdb
DEBU[0000] IsRunningImageAllowed for image containers-storage:[overlay@/var/lib/containers/storage]@2e310053a0c44d01547a01dd1a69ccdcf84703311d0dc8e4467e766b5ebf5975
DEBU[0000]  Using default policy section
DEBU[0000]  Requirement 0: allowed
DEBU[0000] Overall: allowed
Getting image source signatures
DEBU[0000] Manifest has MIME type application/vnd.oci.image.manifest.v1+json, ordered candidate list [application/vnd.oci.image.manifest.v1+json, application/vnd.docker.distribution.manifest.v2+json, application/vnd.docker.distribution.manifest.v1+prettyjws, application/vnd.oci.image.index.v1+json, application/vnd.docker.distribution.manifest.list.v2+json, application/vnd.docker.distribution.manifest.v1+json]
DEBU[0000] ... will first try using the original manifest unmodified
DEBU[0000] Checking /v2/openshift-examples/multi-arch-container-image/blobs/sha256:1e4745a2c8bb3b7934193dc1b0e76a3b9f6136e1fd9a1e06167521f8ed33737a
DEBU[0000] GET https://quay.io/v2/
DEBU[0000] Checking /v2/openshift-examples/multi-arch-container-image/blobs/sha256:e48e4f4d88e89f91f675d8536f3a15411217a14c7b5f4b3e3566c7d223f7406e
DEBU[0000] Checking /v2/openshift-examples/multi-arch-container-image/blobs/sha256:94dc982a8d06a901292f506307657022256550d27ab96460f0f6f167b49fa967
DEBU[0000] Checking /v2/openshift-examples/multi-arch-container-image/blobs/sha256:2cb2050899f2a523891a295636e40a61ca6bbd447ab84c9458597e31a01e9944
DEBU[0000] Ping https://quay.io/v2/ status 401
DEBU[0000] GET https://quay.io/v2/auth?account=rbo&scope=repository%3Aopenshift-examples%2Fmulti-arch-container-image%3Apull%2Cpush&service=quay.io
DEBU[0000] GET https://quay.io/v2/auth?account=rbo&scope=repository%3Aopenshift-examples%2Fmulti-arch-container-image%3Apull%2Cpush&service=quay.io
DEBU[0000] GET https://quay.io/v2/auth?account=rbo&scope=repository%3Aopenshift-examples%2Fmulti-arch-container-image%3Apull%2Cpush&service=quay.io
DEBU[0000] GET https://quay.io/v2/auth?account=rbo&scope=repository%3Aopenshift-examples%2Fmulti-arch-container-image%3Apull%2Cpush&service=quay.io
DEBU[0001] Increasing token expiration to: 60 seconds
DEBU[0001] HEAD https://quay.io/v2/openshift-examples/multi-arch-container-image/blobs/sha256:2cb2050899f2a523891a295636e40a61ca6bbd447ab84c9458597e31a01e9944
DEBU[0001] Increasing token expiration to: 60 seconds
DEBU[0001] HEAD https://quay.io/v2/openshift-examples/multi-arch-container-image/blobs/sha256:94dc982a8d06a901292f506307657022256550d27ab96460f0f6f167b49fa967
DEBU[0001] Increasing token expiration to: 60 seconds
DEBU[0001] HEAD https://quay.io/v2/openshift-examples/multi-arch-container-image/blobs/sha256:1e4745a2c8bb3b7934193dc1b0e76a3b9f6136e1fd9a1e06167521f8ed33737a
DEBU[0001] Increasing token expiration to: 60 seconds
DEBU[0001] HEAD https://quay.io/v2/openshift-examples/multi-arch-container-image/blobs/sha256:e48e4f4d88e89f91f675d8536f3a15411217a14c7b5f4b3e3566c7d223f7406e
DEBU[0001] ... not present
DEBU[0001] exporting filesystem layer "4e632322486cb3effc8d20ed221356fe088535ec695ac0e2b2ae693a546390a0" without compression for blob "sha256:2cb2050899f2a523891a295636e40a61ca6bbd447ab84c9458597e31a01e9944"
DEBU[0001] No compression detected
DEBU[0001] Compressing blob on the fly
DEBU[0001] Uploading /v2/openshift-examples/multi-arch-container-image/blobs/uploads/
DEBU[0001] POST https://quay.io/v2/openshift-examples/multi-arch-container-image/blobs/uploads/
DEBU[0001] ... not present
DEBU[0001] exporting filesystem layer "1bbdba6ce22fb317820c489adeba0fea875a126e7083de773de6910c996aa8d1" without compression for blob "sha256:94dc982a8d06a901292f506307657022256550d27ab96460f0f6f167b49fa967"
DEBU[0001] No compression detected
DEBU[0001] Compressing blob on the fly
DEBU[0001] Uploading /v2/openshift-examples/multi-arch-container-image/blobs/uploads/
DEBU[0001] POST https://quay.io/v2/openshift-examples/multi-arch-container-image/blobs/uploads/
DEBU[0001] ... not present
DEBU[0001] exporting filesystem layer "e48e4f4d88e89f91f675d8536f3a15411217a14c7b5f4b3e3566c7d223f7406e" without compression for blob "sha256:e48e4f4d88e89f91f675d8536f3a15411217a14c7b5f4b3e3566c7d223f7406e"
DEBU[0001] ... not present
DEBU[0001] exporting filesystem layer "f6cc3d1c1a85aece08037844c1ed2981625d8e56bdc2d53024a95c72bd1780a4" without compression for blob "sha256:1e4745a2c8bb3b7934193dc1b0e76a3b9f6136e1fd9a1e06167521f8ed33737a"
DEBU[0001] No compression detected
DEBU[0001] Compressing blob on the fly
DEBU[0001] Uploading /v2/openshift-examples/multi-arch-container-image/blobs/uploads/
DEBU[0001] POST https://quay.io/v2/openshift-examples/multi-arch-container-image/blobs/uploads/
DEBU[0001] No compression detected
DEBU[0001] Compressing blob on the fly
DEBU[0001] Uploading /v2/openshift-examples/multi-arch-container-image/blobs/uploads/
DEBU[0001] POST https://quay.io/v2/openshift-examples/multi-arch-container-image/blobs/uploads/
Copying blob 2cb2050899f2 [--------------------------------------] 8.0b / 2.5KiB
Copying blob 94dc982a8d06 [--------------------------------------] 8.0b / 20.0KiB
Copying blob 1e4745a2c8bb [--------------------------------------] 8.0b / 2.3MiB
Copying blob e48e4f4d88e8 [--------------------------------------] 8.0b / 160.0MiB
Copying blob 2cb2050899f2 done
Copying blob 94dc982a8d06 done
Copying blob 2cb2050899f2 done
Copying blob 2cb2050899f2 done
Copying blob 2cb2050899f2 done
Copying blob 2cb2050899f2 done
Copying blob 2cb2050899f2 done
Copying blob 2cb2050899f2 done
Copying blob 94dc982a8d06 done
Copying blob 1e4745a2c8bb done
Copying blob e48e4f4d88e8 done
DEBU[0007] Upload of layer sha256:5dd9a2ffef884b185343d90adab5d29fa3de0921fe219995d7ff2bb05b30d07d complete
DEBU[0007] exporting opaque data as blob "sha256:2e310053a0c44d01547a01dd1a69ccdcf84703311d0dc8e4467e766b5ebf5975"
DEBU[0007] No compression detected
DEBU[0007] Using original blob without modification
DEBU[0007] Checking /v2/openshift-examples/multi-arch-container-image/blobs/sha256:2e310053a0c44d01547a01dd1a69ccdcf84703311d0dc8e4467e766b5ebf5975
DEBU[0007] HEAD https://quay.io/v2/openshift-examples/multi-arch-container-image/blobs/sha256:2e310053a0c44d01547a01dd1a69ccdcf84703311d0dc8e4467e766b5ebf5975
Copying config 2e310053a0 [--------------------------------------] 0.0b / 2.6KiB
DEBU[0008] ... not present
DEBU[0008] Uploading /v2/openshift-examples/multi-arch-container-image/blobs/uploads/
Copying config 2e310053a0 [--------------------------------------] 0.0b / 2.6KiB
Copying config 2e310053a0 done
Copying config 2e310053a0 done
DEBU[0009] Upload of layer sha256:2e310053a0c44d01547a01dd1a69ccdcf84703311d0dc8e4467e766b5ebf5975 complete
Writing manifest to image destination
DEBU[0009] PUT https://quay.io/v2/openshift-examples/multi-arch-container-image/manifests/aarch64
DEBU[0010] Writing manifest using preferred type application/vnd.oci.image.manifest.v1+json failed: Error writing manifest: Error uploading manifest aarch64 to quay.io/openshift-examples/multi-arch-container-image: manifest invalid: manifest invalid
DEBU[0010] Trying to use manifest type application/vnd.docker.distribution.manifest.v2+json…
DEBU[0010] exporting opaque data as blob "sha256:2e310053a0c44d01547a01dd1a69ccdcf84703311d0dc8e4467e766b5ebf5975"
DEBU[0010] No compression detected
DEBU[0010] Using original blob without modification
DEBU[0010] Checking /v2/openshift-examples/multi-arch-container-image/blobs/sha256:2e310053a0c44d01547a01dd1a69ccdcf84703311d0dc8e4467e766b5ebf5975
DEBU[0010] HEAD https://quay.io/v2/openshift-examples/multi-arch-container-image/blobs/sha256:2e310053a0c44d01547a01dd1a69ccdcf84703311d0dc8e4467e766b5ebf5975
Copying config 2e310053a0 [--------------------------------------] 0.0b / 2.6KiB
DEBU[0010] ... already exists
Writing manifest to image destination
DEBU[0010] PUT https://quay.io/v2/openshift-examples/multi-arch-container-image/manifests/aarch64
Storing signatures
DEBU[0011] Successfully pushed docker://quay.io/openshift-examples/multi-arch-container-image:aarch64 with digest sha256:56e3358338aa21adf5405d332e0c0c50b62f480f49b4e0b9280d73720d69fb8f
DEBU[0011] Called push.PersistentPostRunE(podman --log-level=debug push --digestfile first-push.digest.txt quay.io/openshift-examples/multi-arch-container-image:aarch64)

Digest: sha256:56e3358338aa21adf5405d332e0c0c50b62f480f49b4e0b9280d73720d69fb8f

cat first-push.digest.txt
sha256:56e3358338aa21adf5405d332e0c0c50b62f480f49b4e0b9280d73720d69fb8f

Manifest

[root@ip-172-31-28-122 multi-arch-container-image]# curl https://quay.io/v2/openshift-examples/multi-arch-container-image/manifests/$(cat first-push.digest.txt) | jq
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   914  100   914    0     0   2017      0 --:--:-- --:--:-- --:--:--  2013
{
  "schemaVersion": 2,
  "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
  "config": {
    "mediaType": "application/vnd.docker.container.image.v1+json",
    "size": 2653,
    "digest": "sha256:2e310053a0c44d01547a01dd1a69ccdcf84703311d0dc8e4467e766b5ebf5975"
  },
  "layers": [
    {
      "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",
      "size": 56999624,
      "digest": "sha256:5dd9a2ffef884b185343d90adab5d29fa3de0921fe219995d7ff2bb05b30d07d"
    },
    {
      "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",
      "size": 1824,
      "digest": "sha256:c5a0fdbc0d7a7659eb6353fddca97d8779e58b4436e0e46d7e97e590d8aea4de"
    },
    {
      "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",
      "size": 157,
      "digest": "sha256:d58d561de4cd0d4e432743d015200b5f4615114791c2068b9ee713cd52fe03ac"
    },
    {
      "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",
      "size": 1183331,
      "digest": "sha256:d64a47e645a3076f3236365bf4d366629f5d1e0e4edb4160fd2545e65b0462e9"
    }
  ]
}

Second push

[root@ip-172-31-28-122 multi-arch-container-image]# podman --log-level=debug push --digestfile second-push.digest.txt quay.io/openshift-examples/multi-arch-container-image:aarch64
INFO[0000] podman filtering at log level debug
DEBU[0000] Called push.PersistentPreRunE(podman --log-level=debug push --digestfile second-push.digest.txt quay.io/openshift-examples/multi-arch-container-image:aarch64)
DEBU[0000] Reading configuration file "/usr/share/containers/containers.conf"
DEBU[0000] Merged system config "/usr/share/containers/containers.conf": &{Containers:{Devices:[] Volumes:[] ApparmorProfile:containers-default-0.22.0 Annotations:[] CgroupNS:private Cgroups:enabled DefaultCapabilities:[AUDIT_WRITE CHOWN DAC_OVERRIDE FOWNER FSETID KILL NET_BIND_SERVICE SETFCAP SETGID SETPCAP SETUID SYS_CHROOT] DefaultSysctls:[net.ipv4.ping_group_range=0 1] DefaultUlimits:[nproc=4194304:4194304] DefaultMountsFile: DNSServers:[] DNSOptions:[] DNSSearches:[] EnableLabeling:true Env:[PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin TERM=xterm] EnvHost:false HTTPProxy:false Init:false InitPath: IPCNS:private LogDriver:k8s-file LogSizeMax:-1 NetNS:bridge NoHosts:false PidsLimit:2048 PidNS:private SeccompProfile:/usr/share/containers/seccomp.json ShmSize:65536k TZ: Umask:0022 UTSNS:private UserNS:host UserNSSize:65536} Engine:{CgroupCheck:false CgroupManager:systemd ConmonEnvVars:[PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin] ConmonPath:[/usr/libexec/podman/conmon /usr/local/libexec/podman/conmon /usr/local/lib/podman/conmon /usr/bin/conmon /usr/sbin/conmon /usr/local/bin/conmon /usr/local/sbin/conmon /run/current-system/sw/bin/conmon] DetachKeys:ctrl-p,ctrl-q EnablePortReservation:true Env:[] EventsLogFilePath:/var/run/libpod/events/events.log EventsLogger:journald HooksDir:[/usr/share/containers/oci/hooks.d] ImageDefaultTransport:docker:// InfraCommand:/pause InfraImage:k8s.gcr.io/pause:3.2 InitPath:/usr/libexec/podman/catatonit LockType:shm MultiImageArchive:false Namespace: NetworkCmdPath: NoPivotRoot:false NumLocks:2048 OCIRuntime:crun OCIRuntimes:map[crun:[/usr/bin/crun /usr/sbin/crun /usr/local/bin/crun /usr/local/sbin/crun /sbin/crun /bin/crun /run/current-system/sw/bin/crun] kata:[/usr/bin/kata-runtime /usr/sbin/kata-runtime /usr/local/bin/kata-runtime /usr/local/sbin/kata-runtime /sbin/kata-runtime /bin/kata-runtime /usr/bin/kata-qemu /usr/bin/kata-fc] runc:[/usr/bin/runc /usr/sbin/runc /usr/local/bin/runc /usr/local/sbin/runc /sbin/runc /bin/runc /usr/lib/cri-o-runc/sbin/runc /run/current-system/sw/bin/runc]] PullPolicy:missing Remote:false RemoteURI: RemoteIdentity: ActiveService: ServiceDestinations:map[] RuntimePath:[] RuntimeSupportsJSON:[crun runc] RuntimeSupportsNoCgroups:[crun] RuntimeSupportsKVM:[kata kata-runtime kata-qemu kata-fc] SetOptions:{StorageConfigRunRootSet:false StorageConfigGraphRootSet:false StorageConfigGraphDriverNameSet:false StaticDirSet:false VolumePathSet:false TmpDirSet:false} SignaturePolicyPath:/etc/containers/policy.json SDNotify:false StateType:3 StaticDir:/var/lib/containers/storage/libpod StopTimeout:10 TmpDir:/var/run/libpod VolumePath:/var/lib/containers/storage/volumes} Network:{CNIPluginDirs:[/usr/libexec/cni /usr/lib/cni /usr/local/lib/cni /opt/cni/bin] DefaultNetwork:podman NetworkConfigDir:/etc/cni/net.d/}}
DEBU[0000] Using conmon: "/usr/bin/conmon"
DEBU[0000] Initializing boltdb state at /var/lib/containers/storage/libpod/bolt_state.db
DEBU[0000] Using graph driver overlay
DEBU[0000] Using graph root /var/lib/containers/storage
DEBU[0000] Using run root /var/run/containers/storage
DEBU[0000] Using static dir /var/lib/containers/storage/libpod
DEBU[0000] Using tmp dir /var/run/libpod
DEBU[0000] Using volume path /var/lib/containers/storage/volumes
DEBU[0000] Set libpod namespace to ""
DEBU[0000] [graphdriver] trying provided driver "overlay"
DEBU[0000] cached value indicated that overlay is supported
DEBU[0000] cached value indicated that metacopy is being used
DEBU[0000] cached value indicated that native-diff is not being used
WARN[0000] Not using native diff for overlay, this may cause degraded performance for building images: kernel has CONFIG_OVERLAY_FS_REDIRECT_DIR enabled
DEBU[0000] backingFs=extfs, projectQuotaSupported=false, useNativeDiff=false, usingMetacopy=true
DEBU[0000] Initializing event backend journald
DEBU[0000] using runtime "/usr/bin/runc"
DEBU[0000] using runtime "/usr/bin/crun"
WARN[0000] Error initializing configured OCI runtime kata: no valid executable found for OCI runtime kata: invalid argument
INFO[0000] Found CNI network podman (type=bridge) at /etc/cni/net.d/87-podman-bridge.conflist
WARN[0000] Default CNI network name podman is unchangeable
INFO[0000] Setting parallel job count to 7
DEBU[0000] parsed reference into "[overlay@/var/lib/containers/storage+/var/run/containers/storage:overlay.mountopt=nodev,metacopy=on]quay.io/openshift-examples/multi-arch-container-image:aarch64"
DEBU[0000] parsed reference into "[overlay@/var/lib/containers/storage+/var/run/containers/storage:overlay.mountopt=nodev,metacopy=on]@2e310053a0c44d01547a01dd1a69ccdcf84703311d0dc8e4467e766b5ebf5975"
DEBU[0000] Returning credentials from /run/containers/0/auth.json
DEBU[0000] Using registries.d directory /etc/containers/registries.d for sigstore configuration
DEBU[0000]  Using "default-docker" configuration
DEBU[0000]   Using file:///var/lib/containers/sigstore
DEBU[0000] Looking for TLS certificates and private keys in /etc/docker/certs.d/quay.io
DEBU[0000] Loading registries configuration "/etc/containers/registries.conf"
DEBU[0000] Using blob info cache at /var/lib/containers/cache/blob-info-cache-v1.boltdb
DEBU[0000] IsRunningImageAllowed for image containers-storage:[overlay@/var/lib/containers/storage]@2e310053a0c44d01547a01dd1a69ccdcf84703311d0dc8e4467e766b5ebf5975
DEBU[0000]  Using default policy section
DEBU[0000]  Requirement 0: allowed
DEBU[0000] Overall: allowed
Getting image source signatures
DEBU[0000] Manifest has MIME type application/vnd.oci.image.manifest.v1+json, ordered candidate list [application/vnd.oci.image.manifest.v1+json, application/vnd.docker.distribution.manifest.v2+json, application/vnd.docker.distribution.manifest.v1+prettyjws, application/vnd.oci.image.index.v1+json, application/vnd.docker.distribution.manifest.list.v2+json, application/vnd.docker.distribution.manifest.v1+json]
DEBU[0000] ... will first try using the original manifest unmodified
DEBU[0000] Checking /v2/openshift-examples/multi-arch-container-image/blobs/sha256:1e4745a2c8bb3b7934193dc1b0e76a3b9f6136e1fd9a1e06167521f8ed33737a
DEBU[0000] GET https://quay.io/v2/
DEBU[0000] Checking /v2/openshift-examples/multi-arch-container-image/blobs/sha256:e48e4f4d88e89f91f675d8536f3a15411217a14c7b5f4b3e3566c7d223f7406e
DEBU[0000] Checking /v2/openshift-examples/multi-arch-container-image/blobs/sha256:94dc982a8d06a901292f506307657022256550d27ab96460f0f6f167b49fa967
DEBU[0000] Checking /v2/openshift-examples/multi-arch-container-image/blobs/sha256:2cb2050899f2a523891a295636e40a61ca6bbd447ab84c9458597e31a01e9944
DEBU[0000] Ping https://quay.io/v2/ status 401
DEBU[0000] GET https://quay.io/v2/auth?account=rbo&scope=repository%3Aopenshift-examples%2Fmulti-arch-container-image%3Apull%2Cpush&service=quay.io
DEBU[0000] GET https://quay.io/v2/auth?account=rbo&scope=repository%3Aopenshift-examples%2Fmulti-arch-container-image%3Apull%2Cpush&service=quay.io
DEBU[0000] GET https://quay.io/v2/auth?account=rbo&scope=repository%3Aopenshift-examples%2Fmulti-arch-container-image%3Apull%2Cpush&service=quay.io
DEBU[0000] GET https://quay.io/v2/auth?account=rbo&scope=repository%3Aopenshift-examples%2Fmulti-arch-container-image%3Apull%2Cpush&service=quay.io
DEBU[0001] Increasing token expiration to: 60 seconds
DEBU[0001] HEAD https://quay.io/v2/openshift-examples/multi-arch-container-image/blobs/sha256:94dc982a8d06a901292f506307657022256550d27ab96460f0f6f167b49fa967
DEBU[0001] Increasing token expiration to: 60 seconds
DEBU[0001] HEAD https://quay.io/v2/openshift-examples/multi-arch-container-image/blobs/sha256:1e4745a2c8bb3b7934193dc1b0e76a3b9f6136e1fd9a1e06167521f8ed33737a
DEBU[0001] Increasing token expiration to: 60 seconds
DEBU[0001] HEAD https://quay.io/v2/openshift-examples/multi-arch-container-image/blobs/sha256:2cb2050899f2a523891a295636e40a61ca6bbd447ab84c9458597e31a01e9944
DEBU[0001] Increasing token expiration to: 60 seconds
DEBU[0001] HEAD https://quay.io/v2/openshift-examples/multi-arch-container-image/blobs/sha256:e48e4f4d88e89f91f675d8536f3a15411217a14c7b5f4b3e3566c7d223f7406e
DEBU[0001] ... not present
DEBU[0001] Trying to reuse cached location sha256:c5a0fdbc0d7a7659eb6353fddca97d8779e58b4436e0e46d7e97e590d8aea4de in quay.io/openshift-examples/multi-arch-container-image
DEBU[0001] Checking /v2/openshift-examples/multi-arch-container-image/blobs/sha256:c5a0fdbc0d7a7659eb6353fddca97d8779e58b4436e0e46d7e97e590d8aea4de
DEBU[0001] GET https://quay.io/v2/auth?account=rbo&scope=repository%3Aopenshift-examples%2Fmulti-arch-container-image%3Apull%2Cpush&scope=repository%3Aopenshift-examples%2Fmulti-arch-container-image%3Apull&service=quay.io
DEBU[0001] ... not present
DEBU[0001] Trying to reuse cached location sha256:d64a47e645a3076f3236365bf4d366629f5d1e0e4edb4160fd2545e65b0462e9 in quay.io/openshift-examples/multi-arch-container-image
DEBU[0001] Checking /v2/openshift-examples/multi-arch-container-image/blobs/sha256:d64a47e645a3076f3236365bf4d366629f5d1e0e4edb4160fd2545e65b0462e9
DEBU[0001] GET https://quay.io/v2/auth?account=rbo&scope=repository%3Aopenshift-examples%2Fmulti-arch-container-image%3Apull%2Cpush&scope=repository%3Aopenshift-examples%2Fmulti-arch-container-image%3Apull&service=quay.io
DEBU[0001] ... not present
DEBU[0001] Trying to reuse cached location sha256:d58d561de4cd0d4e432743d015200b5f4615114791c2068b9ee713cd52fe03ac in quay.io/openshift-examples/multi-arch-container-image
DEBU[0001] Checking /v2/openshift-examples/multi-arch-container-image/blobs/sha256:d58d561de4cd0d4e432743d015200b5f4615114791c2068b9ee713cd52fe03ac
DEBU[0001] GET https://quay.io/v2/auth?account=rbo&scope=repository%3Aopenshift-examples%2Fmulti-arch-container-image%3Apull%2Cpush&scope=repository%3Aopenshift-examples%2Fmulti-arch-container-image%3Apull&service=quay.io
DEBU[0001] ... not present
DEBU[0001] Trying to reuse cached location sha256:5dd9a2ffef884b185343d90adab5d29fa3de0921fe219995d7ff2bb05b30d07d in quay.io/openshift-examples/multi-arch-container-image
DEBU[0001] Checking /v2/openshift-examples/multi-arch-container-image/blobs/sha256:5dd9a2ffef884b185343d90adab5d29fa3de0921fe219995d7ff2bb05b30d07d
DEBU[0001] GET https://quay.io/v2/auth?account=rbo&scope=repository%3Aopenshift-examples%2Fmulti-arch-container-image%3Apull%2Cpush&scope=repository%3Aopenshift-examples%2Fmulti-arch-container-image%3Apull&service=quay.io
DEBU[0002] Increasing token expiration to: 60 seconds
DEBU[0002] HEAD https://quay.io/v2/openshift-examples/multi-arch-container-image/blobs/sha256:d64a47e645a3076f3236365bf4d366629f5d1e0e4edb4160fd2545e65b0462e9
DEBU[0002] Increasing token expiration to: 60 seconds
DEBU[0002] HEAD https://quay.io/v2/openshift-examples/multi-arch-container-image/blobs/sha256:c5a0fdbc0d7a7659eb6353fddca97d8779e58b4436e0e46d7e97e590d8aea4de
DEBU[0002] Increasing token expiration to: 60 seconds
DEBU[0002] HEAD https://quay.io/v2/openshift-examples/multi-arch-container-image/blobs/sha256:5dd9a2ffef884b185343d90adab5d29fa3de0921fe219995d7ff2bb05b30d07d
DEBU[0002] Increasing token expiration to: 60 seconds
DEBU[0002] HEAD https://quay.io/v2/openshift-examples/multi-arch-container-image/blobs/sha256:d58d561de4cd0d4e432743d015200b5f4615114791c2068b9ee713cd52fe03ac
DEBU[0002] ... already exists
DEBU[0002] Skipping blob sha256:1e4745a2c8bb3b7934193dc1b0e76a3b9f6136e1fd9a1e06167521f8ed33737a (already present):
Copying blob 1e4745a2c8bb skipped: already exists
DEBU[0002] ... already exists
Copying blob 1e4745a2c8bb skipped: already exists
Copying blob 94dc982a8d06 skipped: already exists
Copying blob 1e4745a2c8bb skipped: already exists
Copying blob 94dc982a8d06 skipped: already exists
Copying blob 1e4745a2c8bb skipped: already exists
Copying blob 94dc982a8d06 skipped: already exists
Copying blob e48e4f4d88e8 skipped: already exists
Copying blob 2cb2050899f2 [--------------------------------------] 0.0b / 0.0b
DEBU[0002] exporting opaque data as blob "sha256:2e310053a0c44d01547a01dd1a69ccdcf84703311d0dc8e4467e766b5ebf5975"
DEBU[0002] No compression detected
DEBU[0002] Using original blob without modification
DEBU[0002] Checking /v2/openshift-examples/multi-arch-container-image/blobs/sha256:2e310053a0c44d01547a01dd1a69ccdcf84703311d0dc8e4467e766b5ebf5975
DEBU[0002] HEAD https://quay.io/v2/openshift-examples/multi-arch-container-image/blobs/sha256:2e310053a0c44d01547a01dd1a69ccdcf84703311d0dc8e4467e766b5ebf5975
Copying config 2e310053a0 [--------------------------------------] 0.0b / 2.6KiB
DEBU[0003] ... already exists
Writing manifest to image destination
DEBU[0003] PUT https://quay.io/v2/openshift-examples/multi-arch-container-image/manifests/aarch64
DEBU[0003] Writing manifest using preferred type application/vnd.oci.image.manifest.v1+json failed: Error writing manifest: Error uploading manifest aarch64 to quay.io/openshift-examples/multi-arch-container-image: manifest invalid: manifest invalid
DEBU[0003] Trying to use manifest type application/vnd.docker.distribution.manifest.v2+json…
DEBU[0003] exporting opaque data as blob "sha256:2e310053a0c44d01547a01dd1a69ccdcf84703311d0dc8e4467e766b5ebf5975"
DEBU[0003] No compression detected
DEBU[0003] Using original blob without modification
DEBU[0003] Checking /v2/openshift-examples/multi-arch-container-image/blobs/sha256:2e310053a0c44d01547a01dd1a69ccdcf84703311d0dc8e4467e766b5ebf5975
DEBU[0003] HEAD https://quay.io/v2/openshift-examples/multi-arch-container-image/blobs/sha256:2e310053a0c44d01547a01dd1a69ccdcf84703311d0dc8e4467e766b5ebf5975
Copying config 2e310053a0 [--------------------------------------] 0.0b / 2.6KiB
DEBU[0003] ... already exists
Writing manifest to image destination
DEBU[0003] PUT https://quay.io/v2/openshift-examples/multi-arch-container-image/manifests/aarch64
DEBU[0004] Upload of manifest type application/vnd.docker.distribution.manifest.v2+json failed: Error writing manifest: Error uploading manifest aarch64 to quay.io/openshift-examples/multi-arch-container-image: manifest invalid: manifest invalid
DEBU[0004] Trying to use manifest type application/vnd.docker.distribution.manifest.v1+prettyjws…
DEBU[0004] exporting opaque data as blob "sha256:2e310053a0c44d01547a01dd1a69ccdcf84703311d0dc8e4467e766b5ebf5975"
DEBU[0004] Uploading empty layer during conversion to schema 1
DEBU[0004] Checking /v2/openshift-examples/multi-arch-container-image/blobs/sha256:a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4
DEBU[0004] HEAD https://quay.io/v2/openshift-examples/multi-arch-container-image/blobs/sha256:a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4
DEBU[0004] ... already exists
Writing manifest to image destination
DEBU[0004] PUT https://quay.io/v2/openshift-examples/multi-arch-container-image/manifests/aarch64
Storing signatures
DEBU[0005] Successfully pushed docker://quay.io/openshift-examples/multi-arch-container-image:aarch64 with digest sha256:e4989b7b2736574d7fd75930e9a62faa5c0d0c1f7649dc627736664562829a0c
DEBU[0005] Called push.PersistentPostRunE(podman --log-level=debug push --digestfile second-push.digest.txt quay.io/openshift-examples/multi-arch-container-image:aarch64)
[root@ip-172-31-28-122 multi-arch-container-image]# podman --log-level=debug push --digestfile second-push.digest.txt quay.io/openshift-examples/multi-arch-container-image:aarch64^C
[root@ip-172-31-28-122 multi-arch-container-image]# cat second-push.digest.txt
sha256:e4989b7b2736574d7fd75930e9a62faa5c0d0c1f7649dc627736664562829a0c[root@ip-172-31-28-122 multi-arch-container-image]# cat first-push.digest.txt
sha256:56e3358338aa21adf5405d332e0c0c50b62f480f49b4e0b9280d73720d69fb8f[root@ip-172-31-28-122 multi-arch-container-image]# podman --log-level=debug push --digestfile second-push.digest.txt quay.io/openshift-examples/multi-arch-container-image:aarch64


Digest sha256:e4989b7b2736574d7fd75930e9a62faa5c0d0c1f7649dc627736664562829a0c

cat second-push.digest.txt
sha256:e4989b7b2736574d7fd75930e9a62faa5c0d0c1f7649dc627736664562829a0c

Manifest

[root@ip-172-31-28-122 multi-arch-container-image]# curl https://quay.io/v2/openshift-examples/multi-arch-container-image/manifests/$(cat first-push.digest.txt) | jq
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100    82  100    82    0     0    200      0 --:--:-- --:--:-- --:--:--   200
{
  "errors": [
    {
      "code": "MANIFEST_UNKNOWN",
      "detail": {},
      "message": "manifest unknown"
    }
  ]
}
[root@ip-172-31-28-122 multi-arch-container-image]# curl https://quay.io/v2/openshift-examples/multi-arch-container-image/manifests/$(cat second-push.digest.txt) | jq
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  4574  100  4574    0     0  11156      0 --:--:-- --:--:-- --:--:-- 11156
{
  "name": "openshift-examples/multi-arch-container-image",
  "tag": "aarch64",
  "architecture": "arm64",
  "fsLayers": [
    {
      "blobSum": "sha256:a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4"
    },
    {
      "blobSum": "sha256:d64a47e645a3076f3236365bf4d366629f5d1e0e4edb4160fd2545e65b0462e9"
    },
    {
      "blobSum": "sha256:a3ed95caeb02ffe68cdd9fd84406680ae93d633cb16422d00e8a7c22955b46d4"
    },
    {
      "blobSum": "sha256:d58d561de4cd0d4e432743d015200b5f4615114791c2068b9ee713cd52fe03ac"
    },
    {
      "blobSum": "sha256:c5a0fdbc0d7a7659eb6353fddca97d8779e58b4436e0e46d7e97e590d8aea4de"
    },
    {
      "blobSum": "sha256:5dd9a2ffef884b185343d90adab5d29fa3de0921fe219995d7ff2bb05b30d07d"
    }
  ],
  "history": [
    {
      "v1Compatibility": "{\"architecture\":\"arm64\",\"config\":{\"Env\":[\"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin\",\"container=oci\"],\"Entrypoint\":[\"/app/main\"],\"WorkingDir\":\"/app\",\"Labels\":{\"architecture\":\"arm64\",\"build-date\":\"2020-09-01T19:43:02.728394\",\"com.redhat.build-host\":\"arm64-osbs-13.prod.osbs.eng.bos.redhat.com\",\"com.redhat.component\":\"ubi8-minimal-container\",\"com.redhat.license_terms\":\"https://www.redhat.com/en/about/red-hat-end-user-license-agreements#UBI\",\"description\":\"The Universal Base Image Minimal is a stripped down image that uses microdnf as a package manager. This base image is freely redistributable, but Red Hat only supports Red Hat technologies through subscriptions for Red Hat products. This image is maintained by Red Hat and updated regularly.\",\"distribution-scope\":\"public\",\"io.buildah.version\":\"1.16.1\",\"io.k8s.description\":\"The Universal Base Image Minimal is a stripped down image that uses microdnf as a package manager. This base image is freely redistributable, but Red Hat only supports Red Hat technologies through subscriptions for Red Hat products. This image is maintained by Red Hat and updated regularly.\",\"io.k8s.display-name\":\"Red Hat Universal Base Image 8 Minimal\",\"io.openshift.expose-services\":\"\",\"io.openshift.tags\":\"minimal rhel8\",\"maintainer\":\"Red Hat, Inc.\",\"name\":\"ubi8-minimal\",\"release\":\"349\",\"summary\":\"Provides the latest release of the minimal Red Hat Universal Base Image 8.\",\"url\":\"https://access.redhat.com/containers/#/registry.access.redhat.com/ubi8-minimal/images/8.2-349\",\"vcs-ref\":\"34bc4001b02c4f75e89663e1f8407a08af05f8ab\",\"vcs-type\":\"git\",\"vendor\":\"Red Hat, Inc.\",\"version\":\"8.2\"}},\"created\":\"2020-10-30T09:14:26.159823906Z\",\"id\":\"d12d152513ef095ba90d04981bcf7ba4b67a353c911c53c55af51c634139011c\",\"os\":\"linux\",\"parent\":\"7dd749b62db6e6c102e5633d778e463b0b0899408c5fac37e98623a719f564bd\",\"throwaway\":true}"
    },
    {
      "v1Compatibility": "{\"id\":\"7dd749b62db6e6c102e5633d778e463b0b0899408c5fac37e98623a719f564bd\",\"parent\":\"cb76665261614205861fd4b9a8080a040086ce8ed2b6ece17d6bd58e59c29ee1\",\"created\":\"2020-10-30T09:14:26.000153386Z\",\"container_config\":{\"Cmd\":[\"/bin/sh -c #(nop) COPY file:c096b32ff9a57715fe317620fcdbef18b69f4a582adcba3149ee46b1bf25ea93 in /app/main \"]}}"
    },
    {
      "v1Compatibility": "{\"id\":\"cb76665261614205861fd4b9a8080a040086ce8ed2b6ece17d6bd58e59c29ee1\",\"parent\":\"23ec9029453182d1b9f20112864c1ee756bd9d3364ce26bd5625579a6b29c01a\",\"created\":\"2020-10-30T09:14:25.193220801Z\",\"container_config\":{\"Cmd\":[\"/bin/sh -c #(nop) WORKDIR /app\"]},\"throwaway\":true}"
    },
    {
      "v1Compatibility": "{\"id\":\"23ec9029453182d1b9f20112864c1ee756bd9d3364ce26bd5625579a6b29c01a\",\"parent\":\"bfe794315da9fd0fd62d0280e177671210f421e7ef7ee4e6c83a4675cd9fc14d\",\"created\":\"2020-10-30T09:14:25.048030047Z\",\"container_config\":{\"Cmd\":[\"/bin/sh -c mkdir /app\"]}}"
    },
    {
      "v1Compatibility": "{\"id\":\"bfe794315da9fd0fd62d0280e177671210f421e7ef7ee4e6c83a4675cd9fc14d\",\"parent\":\"51ffbce76530da61cf04eb0613af53e1524fdbdf67b5fccfd935d296297088cc\",\"created\":\"2020-09-01T19:44:04.851415Z\",\"container_config\":{\"Cmd\":[\"\"]}}"
    },
    {
      "v1Compatibility": "{\"id\":\"51ffbce76530da61cf04eb0613af53e1524fdbdf67b5fccfd935d296297088cc\",\"comment\":\"Imported from -\",\"created\":\"2020-09-01T19:43:21.892046632Z\",\"container_config\":{\"Cmd\":[\"\"]}}"
    }
  ],
  "schemaVersion": 1,
  "signatures": [
    {
      "header": {
        "jwk": {
          "crv": "P-256",
          "kid": "JGYU:S5EI:KKIG:KRY6:VDSY:FAK6:L3UD:53UH:MUZM:2N7C:XL5L:IC5G",
          "kty": "EC",
          "x": "4V4a78Qaxu_jBSE65SX7_tkjLGC6SQHanSlj6o7ws84",
          "y": "bpKeaQwne0OLmvKHfScR-7cBA3O4ok_gd7qyGurvIJQ"
        },
        "alg": "ES256"
      },
      "signature": "Mf4OPAhq3HQ69FDA0T1TYWGJnLG48v_MD8iM5uwSlSHx24kblYMV7xSswXuQZMWOeT6cy2KzLjaUgNTqwj2b8w",
      "protected": "eyJmb3JtYXRMZW5ndGgiOjQxMjIsImZvcm1hdFRhaWwiOiJmUSIsInRpbWUiOiIyMDIwLTEwLTMwVDEwOjMyOjAwWiJ9"
    }
  ]
}
# This file is is the configuration file for all tools
# that use the containers/storage library.
# See man 5 containers-storage.conf for more information
# The "container storage" table contains all of the server options.
[storage]
# Default Storage Driver
driver = "overlay"
# Temporary storage location
runroot = "/var/run/containers/storage"
# Primary Read/Write location of container storage
graphroot = "/var/lib/containers/storage"
# Storage path for rootless users
#
# rootless_storage_path = "$HOME/.local/share/containers/storage"
[storage.options]
# Storage options to be passed to underlying storage drivers
# AdditionalImageStores is used to pass paths to additional Read/Only image stores
# Must be comma separated list.
additionalimagestores = [
]
# Remap-UIDs/GIDs is the mapping from UIDs/GIDs as they should appear inside of
# a container, to the UIDs/GIDs as they should appear outside of the container,
# and the length of the range of UIDs/GIDs. Additional mapped sets can be
# listed and will be heeded by libraries, but there are limits to the number of
# mappings which the kernel will allow when you later attempt to run a
# container.
#
# remap-uids = 0:1668442479:65536
# remap-gids = 0:1668442479:65536
# Remap-User/Group is a user name which can be used to look up one or more UID/GID
# ranges in the /etc/subuid or /etc/subgid file. Mappings are set up starting
# with an in-container ID of 0 and then a host-level ID taken from the lowest
# range that matches the specified name, and using the length of that range.
# Additional ranges are then assigned, using the ranges which specify the
# lowest host-level IDs first, to the lowest not-yet-mapped in-container ID,
# until all of the entries have been used for maps.
#
# remap-user = "containers"
# remap-group = "containers"
# Root-auto-userns-user is a user name which can be used to look up one or more UID/GID
# ranges in the /etc/subuid and /etc/subgid file. These ranges will be partitioned
# to containers configured to create automatically a user namespace. Containers
# configured to automatically create a user namespace can still overlap with containers
# having an explicit mapping set.
# This setting is ignored when running as rootless.
# root-auto-userns-user = "storage"
#
# Auto-userns-min-size is the minimum size for a user namespace created automatically.
# auto-userns-min-size=1024
#
# Auto-userns-max-size is the minimum size for a user namespace created automatically.
# auto-userns-max-size=65536
[storage.options.overlay]
# ignore_chown_errors can be set to allow a non privileged user running with
# a single UID within a user namespace to run containers. The user can pull
# and use any image even those with multiple uids. Note multiple UIDs will be
# squashed down to the default uid in the container. These images will have no
# separation between the users in the container. Only supported for the overlay
# and vfs drivers.
#ignore_chown_errors = "false"
# Path to an helper program to use for mounting the file system instead of mounting it
# directly.
#mount_program = "/usr/bin/fuse-overlayfs"
# mountopt specifies comma separated list of extra mount options
mountopt = "nodev,metacopy=on"
# Set to skip a PRIVATE bind mount on the storage home directory.
# skip_mount_home = "false"
# Size is used to set a maximum size of the container image.
# size = ""
[storage.options.thinpool]
# Storage Options for thinpool
# autoextend_percent determines the amount by which pool needs to be
# grown. This is specified in terms of % of pool size. So a value of 20 means
# that when threshold is hit, pool will be grown by 20% of existing
# pool size.
# autoextend_percent = "20"
# autoextend_threshold determines the pool extension threshold in terms
# of percentage of pool size. For example, if threshold is 60, that means when
# pool is 60% full, threshold has been hit.
# autoextend_threshold = "80"
# basesize specifies the size to use when creating the base device, which
# limits the size of images and containers.
# basesize = "10G"
# blocksize specifies a custom blocksize to use for the thin pool.
# blocksize="64k"
# directlvm_device specifies a custom block storage device to use for the
# thin pool. Required if you setup devicemapper.
# directlvm_device = ""
# directlvm_device_force wipes device even if device already has a filesystem.
# directlvm_device_force = "True"
# fs specifies the filesystem type to use for the base device.
# fs="xfs"
# log_level sets the log level of devicemapper.
# 0: LogLevelSuppress 0 (Default)
# 2: LogLevelFatal
# 3: LogLevelErr
# 4: LogLevelWarn
# 5: LogLevelNotice
# 6: LogLevelInfo
# 7: LogLevelDebug
# log_level = "7"
# min_free_space specifies the min free space percent in a thin pool require for
# new device creation to succeed. Valid values are from 0% - 99%.
# Value 0% disables
# min_free_space = "10%"
# mkfsarg specifies extra mkfs arguments to be used when creating the base
# device.
# mkfsarg = ""
# metadata_size is used to set the `pvcreate --metadatasize` options when
# creating thin devices. Default is 128k
# metadata_size = ""
# Size is used to set a maximum size of the container image.
# size = ""
# use_deferred_removal marks devicemapper block device for deferred removal.
# If the thinpool is in use when the driver attempts to remove it, the driver
# tells the kernel to remove it as soon as possible. Note this does not free
# up the disk space, use deferred deletion to fully remove the thinpool.
# use_deferred_removal = "True"
# use_deferred_deletion marks thinpool device for deferred deletion.
# If the device is busy when the driver attempts to delete it, the driver
# will attempt to delete device every 30 seconds until successful.
# If the program using the driver exits, the driver will continue attempting
# to cleanup the next time the driver is used. Deferred deletion permanently
# deletes the device and all data stored in device will be lost.
# use_deferred_deletion = "True"
# xfs_nospace_max_retries specifies the maximum number of retries XFS should
# attempt to complete IO when ENOSPC (no space) error is returned by
# underlying storage device.
# xfs_nospace_max_retries = "0"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment