Hi,

Ah, thanks! I didn't know --override-arch could be used as an argument to podman-run. Should it appear in the man page? I did look for anything 'arch' in there but it's not present:
   # man podman-run | grep arch
       --dns-search=domain
       Set custom DNS search domains. Invalid if using --dns-search and
       --dns-search=. if you don't wish to set the search domain)
       Podman will search the host environment for variables starting with the
       --dns-option, or --dns-search with --network that is set to 'none' or

Thanks for you help working around this issue!

brian



On Tue, Feb 11, 2020 at 3:36 AM Valentin Rothberg <rothberg@redhat.com> wrote:


On Tue, Feb 11, 2020 at 4:35 AM Brian Fallik <bfallik@gmail.com> wrote:
Hi,


On Mon, Feb 10, 2020 at 2:33 AM Valentin Rothberg <rothberg@redhat.com> wrote:
Hi Brian,

thanks for reaching out!

On Mon, Feb 10, 2020 at 12:27 AM Brian Fallik <bfallik@gmail.com> wrote:
Hi,

I've been actively following the work to package Podman for Debian for eventual installation on my raspberry pi nodes. I noticed the installation docs recommended using the Kubic project packaging and so I used that to successfully (and easily!) install podman on my raspi. Hooray!

Once Podman is in the main repositories of Debian, we will recommend using the packages from there.
 
However now I'm having trouble pulling arm images. All my attempts result in amd64:
  # podman pull coredns/coredns:latest
  Trying to pull docker.io/coredns/coredns:latest...
  Getting image source signatures
  Copying blob c6568d217a00 done  
  Copying blob 89d2da39cc12 done  
  Copying config b52ee75a77 done  
  Writing manifest to image destination
  Storing signatures
  b52ee75a7749dc470ec4dacf990c26733c1477371f190e2748d653b8834c3f48
  # podman image inspect b52ee75a7749d | jq '.[0].Architecture'
  "amd64"
and then again with override-arch:
  # podman image rm b52ee75a7749d
  Untagged: docker.io/coredns/coredns:latest
  Deleted: b52ee75a7749dc470ec4dacf990c26733c1477371f190e2748d653b8834c3f48
  # podman pull --override-arch=arm coredns/coredns:latest
  Trying to pull docker.io/coredns/coredns:latest...
  Getting image source signatures
  Copying blob c6568d217a00 done  
  Copying blob 89d2da39cc12 done  
  Copying config b52ee75a77 done  
  Writing manifest to image destination
  Storing signatures
  b52ee75a7749dc470ec4dacf990c26733c1477371f190e2748d653b8834c3f48
  # podman image inspect b52ee75a7749d | jq '.[0].Architecture'
  "amd64"

podman info:
  # podman version
  Version:            1.8.0
  RemoteAPI Version:  1
  Go Version:         go1.11.6
  OS/Arch:            linux/arm

Any tips on how to convince podman to pull arm images within rasbian?

You have done everything correctly and you actually pulled the coredns image for ARM but the config of the image claims to be for AMD64. In other words, the coredns images have a bug as the image configs claim to be of a different architecture. But that shouldn't be a problem as you can still run them with Podman.

I poked around but wasn't able to uncover *how* to run the mis-configured image. Is there some special flag to `podman run` or environment variable that instructs podman to ignore the existing image architecture? Or am I supposed to fix the image configuration so that it correctly reports 'arm'?

I assume you're hitting an "incompatible image architecture ..." error? You can workaround that by passing --override-arch=arm to podman-run. By default, Podman compares the image's OS and arch to what the image claims and errors out in case of a mismatch. Using --override-{arch,os} lets Podman eat whatever we specify.

But I think we need to revert the checks in Podman given so many images have the wrong architecture in their config.

Kind regards,
 Valentin
 
Thanks,
brian

 
This seems to be a fairly common issue (see the Kubernetes pause image [1]).

For a detailed look you can use skopeo and inspect the images on the registry:

$ skopeo inspect --raw docker://docker.io/coredns/coredns:latest | jq .

... we can see that the manifest list includes images for a couple of architectures. Let's pick the ARM one and inspect it by referencing it via its digest.

$ skopeo inspect docker://docker.io/coredns/coredns@sha256:a8be13d1f9fbd24d75dbc2013bb37f810cd1aa217d135173dab6cdbef652485e|jq .| grep Architecture
"Architecture": "amd64",

... just as you described. The ARM image claims to be for AMD64.

Kind regards,
 Valentin