Uploaded image for project: 'Project Quay'
  1. Project Quay
  2. PROJQUAY-2470

Mirroring fails if the source manifest is not of amd64 architecture

XMLWordPrintable

    • False
    • False
    • Quay Enterprise

      Mirroring of the image clefos:latest will fail on Quay because this image is made exclusively for IBM Z architecture. This is the output when skopeo commands are run manually:

      # skopeo inspect docker://clefos:latest
      FATA[0002] Error parsing manifest for image: Error choosing image instance: no image found in manifest list for architecture amd64, variant "", OS linux
      
      # skopeo inspect --raw docker://clefos:latest | jq '.'
      {
        "manifests": [
          {
            "digest": "sha256:e5641a2249f8014690a209b85173ee4569154c6281d27accf5efee43fa545fb6",
            "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
            "platform": {
              "architecture": "s390x",
              "os": "linux"
            },
            "size": 529
          }
        ],
        "mediaType": "application/vnd.docker.distribution.manifest.list.v2+json",
        "schemaVersion": 2
      }
      

      The problem lies in the order of operations that the mirror worker does. It first tries to do an inspect to determine what is the tag list and then does the skopeo copy -a (to copy all images. Because the inspect operation fails, the 2nd one is never executed. However, copying the image manually without doing the inspect first succeeds:

      Unable to find source-code formatter for language: bashl. Available languages are: actionscript, ada, applescript, bash, c, c#, c++, cpp, css, erlang, go, groovy, haskell, html, java, javascript, js, json, lua, none, nyan, objc, perl, php, python, r, rainbow, ruby, scala, sh, sql, swift, visualbasic, xml, yaml
      # skopeo copy --src-creds username:password --dest-creds username:password --dest-tls-verify=false -a docker://clefos:latest docker://tardis.example.com/ibazulic/clefos:latest
      Getting image list signatures
      Copying 1 of 1 images in list
      Copying image sha256:e5641a2249f8014690a209b85173ee4569154c6281d27accf5efee43fa545fb6 (1/1)
      Getting image source signatures
      Copying blob 0bcda6d6228a done
      Copying config 865aa764e0 done
      Writing manifest to image destination
      Storing signatures
      Writing manifest list to image destination
      Storing list signatures
      

      Is there a way to force the mirror worker to sync images that are not of the correct arch?

              Unassigned Unassigned
              rhn-support-ibazulic Ivan Bazulic
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

                Created:
                Updated: