Запустите контейнер linux/arm через qemu binfmt_misc в Docker LCOW

Я выпускаю двоичные файлы ARM моего программного обеспечения, запустив цепочку инструментов компилятора на эмулированной машине ARM.

Linux может запускать иностранные двоичные файлы, регистрируясь qemu-user-static в /proc/sys/fs/binfmt_misc/, Это позволяет вам запускать образ Docker ARM32 или ARM64 на хосте Docker x86_64 следующим образом:

Приготовление:

# 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

Это прекрасно работает на Docker для Linux.

Он также отлично работает в Docker для Windows при использовании контейнеров Linux (MobyLinuxVM)

Он не работает при использовании Docker для Windows при использовании контейнеров Windows (LCOW / hcsdiag Режим). Я хочу использовать этот режим, потому что он может работать как с контейнерами 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 каталог.

  • Как можно запустить образ контейнера Linux/ARM на хосте Windows/x86_64 Docker, работающем с LCOW?

  • Можно ли изменить образ хоста Linux, используемый LCOW?

  • Есть ли другой способ получить унифицированный демон Docker, способный запускать образы Windows/x86_64, Linux/x86_64 и Linux/ARM Docker?

0 ответов

Другие вопросы по тегам