To allow support of images across multiple operating systems and architectures, Docker has introduced multi-architecture images (aka manifest list or fat manifest). As stated in https://developer.ibm.com/linuxonpower/2017/07/27/create-multi-architecture-docker-image/:
An individual manifest describes the contents of one image, and a manifest list lets you group multiple images together. After the creation of a manifest list, anyone (from the project owners to their user-base) can use the manifest list name where they once used an individual image name. When a user does a docker pull or docker run, the docker engine does the work of selecting which image to pull based on the operating system and architecture on which it is running. As a result, a project’s users no longer have to worry about finding the name of the image that will work for their platform
An example of a manifest list can be found in the Docker spec: https://docs.docker.com/registry/spec/manifest-v2-2/#example-manifest-list
The expectation is that Nexus should support both the hosting and proxying of multi-arch images. This will also require adding support for the manifest list format type application/vnd.docker.distribution.manifest.list.v2+json
It should be possible to both push such an image and more importantly pull an image via Nexus along the lines of the above description i.e. "docker engine does the work of selecting which image to pull based on the operating system and architecture on which it is running".
See below for code changes done for tools like podman and cri-o to fix the issue in those products.