Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

unable to load manifest list: unsupported format #8023

Closed
cevich opened this issue Oct 14, 2020 · 2 comments · Fixed by #8100
Closed

unable to load manifest list: unsupported format #8023

cevich opened this issue Oct 14, 2020 · 2 comments · Fixed by #8100
Assignees
Labels
In Progress This issue is actively being worked by the assignee, please do not work on this at this time. kind/bug Categorizes issue or PR as related to a bug. locked - please file new issue/PR Assist humans wanting to comment on an old issue or PR with locked comments.

Comments

@cevich
Copy link
Member

cevich commented Oct 14, 2020

/kind bug

Description

Podman does not support inspecting non-list type manifests which may be returned from a registry mirror.

Steps to reproduce the issue:

  1. Configure ~/.config/containers/registries.conf with
unqualified-search-registries = ['registry.fedoraproject.org', 'registry.access.redhat.com', 'registry.centos.org', 'docker.io']

[[registry]]
location="docker.io"

[[registry.mirror]]
location="mirror.gcr.io"
  1. run podman manifest inspect docker://busybox:latest

Describe the results you received:

Error: error inspect manifest docker://busybox:latest: manifest is of type application/vnd.docker.distribution.manifest.v2+json (not a list type)

Describe the results you expected:

{
   "schemaVersion": 2,
   "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
   "config": {
      "mediaType": "application/vnd.docker.container.image.v1+json",
      "size": 1493,
      "digest": "sha256:f0b02e9d092d905d0d87a8455a1ae3e9bb47b4aa3dc125125ca5cd10d6441c9f"
   },
   "layers": [
      {
         "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",
         "size": 764619,
         "digest": "sha256:9758c28807f21c13d05c704821fdd56c0b9574912f9b916c65e1df3e6b8bc572"
      }
   ]
}

Additional information you deem important (e.g. issue happens only occasionally):

Output of podman version:

Version:      2.2.0-dev
API Version:  2.0.0
Go Version:   go1.14.9
Git Commit:   e3eb6fd0e4115162e10caf6ae2196fd8774657e0-dirty
Built:        Wed Oct 14 15:55:43 2020
OS/Arch:      linux/amd64

Output of podman info --debug:

host:
  arch: amd64
  buildahVersion: 1.16.1
  cgroupManager: systemd
  cgroupVersion: v2
  conmon:
    package: conmon-2.0.19-1.fc32.x86_64
    path: /usr/bin/conmon
    version: 'conmon version 2.0.19, commit: 5dce9767526ed27f177a8fa3f281889ad509fea7'
  cpus: 12
  distribution:
    distribution: fedora
    version: "32"
  eventLogger: journald
  hostname: localhost.localdomain
  idMappings:
    gidmap:
    - container_id: 0
      host_id: 4179
      size: 1
    - container_id: 1
      host_id: 100000
      size: 65536
    uidmap:
    - container_id: 0
      host_id: 4179
      size: 1
    - container_id: 1
      host_id: 100000
      size: 65536
  kernel: 5.7.16-200.fc32.x86_64
  linkmode: dynamic
  memFree: 1411776512
  memTotal: 33392246784
  ociRuntime:
    name: crun
    package: crun-0.15-5.fc32.x86_64
    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/user/4179/podman/podman.sock
  rootless: true
  slirp4netns:
    executable: /usr/bin/slirp4netns
    package: slirp4netns-1.1.4-1.fc32.x86_64
    version: |-
      slirp4netns version 1.1.4
      commit: b66ffa8e262507e37fca689822d23430f3357fe8
      libslirp: 4.3.1
      SLIRP_CONFIG_VERSION_MAX: 2
  swapFree: 4275412992
  swapTotal: 4290768896
  uptime: 1181h 36m 12.37s (Approximately 49.21 days)
registries:
  docker.io:
    Blocked: false
    Insecure: false
    Location: docker.io
    MirrorByDigestOnly: false
    Mirrors:
    - Insecure: false
      Location: mirror.gcr.io
    Prefix: docker.io
  search:
  - registry.fedoraproject.org
  - registry.access.redhat.com
  - registry.centos.org
  - docker.io
store:
  configFile: /home/cevich/.config/containers/storage.conf
  containerStore:
    number: 1
    paused: 0
    running: 0
    stopped: 1
  graphDriverName: overlay
  graphOptions:
    overlay.mount_program:
      Executable: /usr/bin/fuse-overlayfs
      Package: fuse-overlayfs-1.1.2-1.fc32.x86_64
      Version: |-
        fusermount3 version: 3.9.1
        fuse-overlayfs: version 1.1.0
        FUSE library version 3.9.1
        using FUSE kernel interface version 7.31
  graphRoot: /home/cevich/.local/share/containers/storage
  graphStatus:
    Backing Filesystem: xfs
    Native Overlay Diff: "false"
    Supports d_type: "true"
    Using metacopy: "false"
  imageStore:
    number: 27
  runRoot: /run/user/4179/containers
  volumePath: /home/cevich/.local/share/containers/storage/volumes
version:
  APIVersion: 2.0.0
  Built: 1601494271
  BuiltTime: Wed Sep 30 15:31:11 2020
  GitCommit: ""
  GoVersion: go1.14.9
  OsArch: linux/amd64
  Version: 2.1.1

Package info (e.g. output of rpm -q podman or apt list podman):

Built from source

Have you tested with the latest version of Podman and have you checked the Podman Troubleshooting Guide?

Yes

Additional environment details (AWS, VirtualBox, physical, etc.):

Tested with F31 but have reproduced this behavior in CI using both F32.

@openshift-ci-robot openshift-ci-robot added the kind/bug Categorizes issue or PR as related to a bug. label Oct 14, 2020
@nalind
Copy link
Member

nalind commented Oct 19, 2020

If we have podman manifest inspect quietly accept non-lists, how will the test verify that it does the right thing when it does get a list?

@cevich
Copy link
Member Author

cevich commented Oct 21, 2020

If we have podman manifest inspect quietly accept non-lists, how will the test verify that it does the right thing when it does get a list?

TBH, this is what unit-tests are much better at catching, since the developer controls both sides of the equation. For the integration tests, we have almost zero control over what the server hands back, and it could change without any warning 😕

Q: When you say "quietly", I'm imagining that means it accepts the type, but only hands back the list from the arch matching the system?

Also....is there a spec somewhere that lists what mediaType values can be expected from the server? If there's one we missed, it would be good to confirm there aren't more we're missing as well.

@QiWang19 QiWang19 linked a pull request Oct 21, 2020 that will close this issue
@QiWang19 QiWang19 added the In Progress This issue is actively being worked by the assignee, please do not work on this at this time. label Oct 21, 2020
cevich added a commit to cevich/podman that referenced this issue Oct 26, 2020
@github-actions github-actions bot added the locked - please file new issue/PR Assist humans wanting to comment on an old issue or PR with locked comments. label Sep 22, 2023
@github-actions github-actions bot locked as resolved and limited conversation to collaborators Sep 22, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
In Progress This issue is actively being worked by the assignee, please do not work on this at this time. kind/bug Categorizes issue or PR as related to a bug. locked - please file new issue/PR Assist humans wanting to comment on an old issue or PR with locked comments.
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants