cockpit-project / cockpit-podman

Cockpit UI for podman containers
GNU Lesser General Public License v2.1
430 stars 88 forks source link

Nonfiltered search results; container images that aren't available for the architecture are shown #913

Open gbraad opened 2 years ago

gbraad commented 2 years ago

When the cockpit podman view is used on an ARM-baased platform you are still presented with images that aren't available for the architecture. Eg. when you search for ibmjava and start a download, it will hang on download forever as this image isn't available for this target.

Originally posted by @gbraad in https://github.com/code-ready/tray-electron/issues/135#issuecomment-1031566300

gbraad commented 2 years ago

@garrett WDYT? Especially as they have closed the reported issue: https://github.com/containers/podman/issues/13199#issuecomment-1036106047

garrett commented 2 years ago

I agree that it should filter on the supported architecture, even by default.

There's not much sense in downloading and attempting to run a container that will definitely not work. It would only make our users frustrated.

It should be noted that it does get a little tricky when qemu is involved:

The second of these two posts is about running a different arch using podman machine on a Mac, with the "magic" lines of:

podman machine ssh sudo rpm-ostree install qemu-user-static
podman machine ssh sudo systemctl reboot

But the first one (about Docker) talks about running on Linux (specifically Debian here):

sudo apt-get install qemu binfmt-support qemu-user-static # Install the qemu packages
docker run --rm --privileged multiarch/qemu-user-static --reset -p yes # This step will execute the registering scripts

docker run --rm -t arm64v8/ubuntu uname -m # Testing the emulation environment
#aarch64

Both depend on qemu-user-static being installed in the Linux host (native or VM). And, of course, using qemu to run another architecture is going to have a performance hit. (In some cases, it's better than nothing — but in every case, it's best to avoid it if possible.)

The thing is, by default, podman cannot run containers from other architectures. If we can determine if it's possible to run other architectures on a specific host machine, then we can relax the filter to the supported architectures (native and otherwise), with some sort of visual indicator that it's a non-native architecture and a way to filter by native and/or emulated containers. Otherwise, we should simply filter by the host's architecture.

As it would take extra effort to support a non-native architecture on Cockpit's side as well as extra set-up for our users, we should first just filter by the host's architecture.

I'm talking about things at the Cockpit level. We may need additional support from Podman.