#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?