Qemu 使用 docker 图像注册二进制文件

Qemu register binaries using docker image

我正在测试 multiarch/qemu-user-static docker 图像,它应该生成二进制文件来为不同的 CPU 架构构建图像。

我在我的 macbook 上尝试了以下命令:

docker run --rm --privileged multiarch/qemu-user-static:register

其中一个输出是:

Setting /usr/bin/qemu-arm-static as binfmt interpreter for arm
sh: write error: File exists

看起来生成的文件已经存在。

我的问题是我在 /usr/bin/ 中找不到 qemu-arm-static

那么,它保存在哪里?

谢谢

此容器将更改主机 /proc/sys/fs/binfmt_misc 中的文件,因为容器将共享主机的内核。

容器中的候选脚本是:

qemu_target_list="i386 i486 alpha arm armeb sparc32plus ppc ppc64 ppc64le m68k \
mips mipsel mipsn32 mipsn32el mips64 mips64el \
sh4 sh4eb s390x aarch64 aarch64_be hppa riscv32 riscv64 xtensa xtensaeb microblaze 
microblazeel"

以上都会被注册,但实际上host里面已经有人注册了,所以你会得到file already exists.

由于脚本不会退出,所以可以绕过这些错误。

顺便说一句:如果你想的话,你可以使用docker run -it --rm --privileged --entrypoint /bin/sh multiarch/qemu-user-static:register进入容器看看这些脚本。根据它的dockerfile,它会先调用/register shell script.