通过qemu binfmt_misc在Docker LCOW上运行linux / arm容器

时间:2019-03-28 01:07:18

标签: linux windows docker docker-on-windows

我通过在仿真的ARM机器上运行编译器工具链来释放软件的ARM二进制文件。

Linux可以通过在qemu-user-static中注册/proc/sys/fs/binfmt_misc/来运行外部二进制文件。这样,您就可以在x86_64 Docker主机上运行ARM32或ARM64 Docker映像,如下所示:

准备工作:

# Apply `binfmt_misc` changes on host OS
docker run --rm --privileged multiarch/qemu-user-static:register --reset

Dockerfile:

# Get x86_64 qemu-user-static binaries
FROM debian:buster
RUN apt-get update && apt-get install -qqy qemu-user-static

# Get cross-arch rootfs
FROM arm64v8/golang:latest
COPY --from=0 /usr/bin/qemu-aarch64-static /usr/bin/qemu-aarch64-static

这在适用于Linux的Docker上效果很好。

当使用Linux容器(MobyLinuxVM)时,它在Windows的Docker上也很好用

在使用Windows容器(LCOW / hcsdiag模式)的Windows上使用Docker for Windows时,不起作用。我要使用此模式,因为它可以同时运行Linux和Windows容器。但是无法通过binfmt_misc标志来修改--privileged文件:

C:\Program Files\Docker\Docker\Resources\bin\docker.exe: Error response from daemon: Windows does not support privileged mode.
See 'C:\Program Files\Docker\Docker\Resources\bin\docker.exe run --help'.

当前(1803年)的Hyper-V HCS版本运行的是真正的Linux内核,而不是WSL。我想应该可以修改主机的binfmt_misc目录。

  • 如何在运行LCOW的Windows / x86_64 Docker主机上运行Linux / ARM容器映像?

  • 是否可以修改LCOW使用的Linux主机映像?

  • 还有其他方法来获得能够运行Windows / x86_64,Linux / x86_64和Linux / ARM Docker映像的统一Docker守护程序吗?

0 个答案:

没有答案