Docker buildx platform armv7 missing

Hi there,

I work on AMD64 and I want to use docker buildx to build and push an image for ARMv7.

The problem is when I do docker buildx inspect --bootstrap the result is missing the ARMv7 platform.

> docker buildx inspect --bootstrap
Name:   pibuilder
Driver: docker-container

Nodes:
Name:      pibuilder0
Endpoint:  unix:///var/run/docker.sock
Status:    running
Platforms: linux/amd64, linux/amd64/v2, linux/amd64/v3, linux/386

To get this I have installed qemu with yay qemu-full
Then when I do ls /proc/sys/fs/binfmt_misc/ I get this:

> ls /proc/sys/fs/binfmt_misc/
appimage-type1  DOSWin           qemu-alpha  qemu-hexagon  qemu-microblaze    qemu-mips64    qemu-mipsn32    qemu-ppc      qemu-riscv32  qemu-sh4    qemu-sparc32plus  qemu-xtensaeb
appimage-type2  qemu-aarch64     qemu-arm    qemu-hppa     qemu-microblazeel  qemu-mips64el  qemu-mipsn32el  qemu-ppc64    qemu-riscv64  qemu-sh4eb  qemu-sparc64      register
CLR             qemu-aarch64_be  qemu-armeb  qemu-m68k     qemu-mips          qemu-mipsel    qemu-or1k       qemu-ppc64le  qemu-s390x    qemu-sparc  qemu-xtensa       status

I don’t know if this is right or not.

In any case, this does not change anything in the Platforms overview of buildx. I may have to update binfmt somehow but all I found were Ubuntu instruction that did not work out for me.

I have searched using Google, the irst 3 hits are for the Arch Wiki and the AUR, all of them are 404.

Here I have found a guide:
So I ran docker run --privileged --rm tonistiigi/binfmt --install all and it returned:

Unable to find image 'tonistiigi/binfmt:latest' locally
latest: Pulling from tonistiigi/binfmt
8d4d64c318a5: Pull complete 
e9c608ddc3cb: Pull complete 
Digest: sha256:66e11bea77a5ea9d6f0fe79b57cd2b189b5d15b93a2bdb925be22949232e4e55
Status: Downloaded newer image for tonistiigi/binfmt:latest
installing: arm64 qemu-aarch64 already registered
installing: s390x qemu-s390x already registered
installing: riscv64 qemu-riscv64 already registered
installing: mips64le qemu-mips64el already registered
installing: arm qemu-arm already registered
installing: ppc64le qemu-ppc64le already registered
installing: mips64 qemu-mips64 already registered
{
  "supported": [
    "linux/amd64",
    "linux/386"
  ],
  "emulators": [
    "CLR",
    "DOSWin",
    "appimage-type1",
    "appimage-type2",
    "qemu-aarch64",
    "qemu-aarch64_be",
    "qemu-alpha",
    "qemu-arm",
    "qemu-armeb",
    "qemu-hexagon",
    "qemu-hppa",
    "qemu-m68k",
    "qemu-microblaze",
    "qemu-microblazeel",
    "qemu-mips",
    "qemu-mips64",
    "qemu-mips64el",
    "qemu-mipsel",
    "qemu-mipsn32",
    "qemu-mipsn32el",
    "qemu-or1k",
    "qemu-ppc",
    "qemu-ppc64",
    "qemu-ppc64le",
    "qemu-riscv32",
    "qemu-riscv64",
    "qemu-s390x",
    "qemu-sh4",
    "qemu-sh4eb",
    "qemu-sparc",
    "qemu-sparc32plus",
    "qemu-sparc64",
    "qemu-xtensa",
    "qemu-xtensaeb"
  ]
}

Unfortunatly the example provided for appending a platform to my builder do not work for me and there seems to be no relationship between the names returned by the binfmt container and this setup so I wouldn’t know how to append qemu.arm for example, also it is strange that this has no version like armv7 or armv6.

Maybe someone knows how to add ARMv7 to docker buildx on Manjaro?

Hello,

Install qemu-user-static from repositories and after that you should have more architectures/platforms to build images for.

1 Like

Thanks, I have installed extra/qemu-user because I wasn’t able to find the qemu-user-static using pacman or yay: error: target not found: qemu-user-static
Looks like it’s not in Stable at the moment… I’m not allowed to included links but it’s at packages dot manjaro dot org.

Anyway.
I still see the same platforms but I just ignored it and used docker buildx build --platform=linux/arm64 --push -t something/.something:latest . anyway and it seems to work. So it looks like there is a difference between what the docker buildx inspect --bootstrap shows and what I can actually use.

Ah, you are on stable branch

and is not there yet, see Packages
Well, you can always trick it by switching branches, but since is depended on the same glibc version that is on all branches, then you can:

sudo pacman -U https://mirrors.xtom.de/manjaro/testing/extra/x86_64/qemu-user-static-7.1.0-5-x86_64.pkg.tar.zst

but if you got it working, well, then no need to go this route.

1 Like

This topic was automatically closed 2 days after the last reply. New replies are no longer allowed.