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

#linux #windows #docker #docker-for-windows

#linux #Windows #docker #docker-для-Windows

Вопрос:

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

Linux может запускать внешние двоичные файлы, зарегистрировавшись qemu-user-static в /proc/sys/fs/binfmt_misc/ . Это позволяет запустить образ ARM32 или ARM64 Docker на хосте x86_64 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 amp;amp; 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 FilesDockerDockerResourcesbindocker.exe: Error response from daemon: Windows does not support privileged mode.
See 'C:Program FilesDockerDockerResourcesbindocker.exe run --help'.
  

Текущие версии Hyper-V HCS (начиная с 1803 года) запускают реальное ядро Linux, а не WSL. Я предполагаю, что должна быть возможность изменить binfmt_misc каталог хоста.

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

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

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