Может ли Windows nanoserver работать внутри Linux docker?

https://msdn.microsoft.com/en-us/virtualization/windowscontainers/deployment/deployment_nano рассказывает о запуске образа docker наносервера под Windows:

docker pull microsoft/наносервер

Означает ли это, что мы должны иметь возможность запускать наносервер в любом месте, где работает Docker (например, Linux)?

Контейнеры обеспечивают изоляцию процессов в общей ОС, а не изоляцию ОС на общем оборудовании, которое вы получаете с виртуальными машинами. Поскольку ОС является общей, хост-ОС должна иметь возможность запускать нужные двоичные файлы. Вы увидите это в архитектуре движка docker и архитектуре образа, который вы хотите запустить, они должны быть совместимы:

$ docker system info --format '{{.OSType}} {{.Architecture}}'linux x86_64$ docker image inspect busybox --format '{{.Os}} {{.Architecture}}'linux amd64

Если вы попытаетесь запустить архитектуру, несовместимую с вашим хостом, вы получите сообщение об ошибке, поскольку двоичный формат не распознается ядром:

$ docker image pull --platform arm64 busybox:latestlatest: Pulling from library/busyboxacafde7ce2e7: Pull completeDigest: sha256:2a03a6059f21e150ae84b0973863609494aad70f0a80eaeb64bddd8d92465812Status: Downloaded newer image for busybox:latest$ docker run -it --rm busybox:latest echo hellostandard_init_linux.go:190: exec user process caused "no such file or directory"

Настольные версии Docker и версия Docker для Windows Server включают виртуальную машину Linux под прикрытием для запуска контейнеров Linux (контейнеры Linux являются доминирующей контейнерной средой, поэтому Docker реализует это с помощью Linuxkit, чтобы упростить рабочий процесс разработчика). Для Windows в движке есть переключатель для использования виртуальной машины Linux или запуска собственных контейнеров Windows.

Однако Docker не имеет встроенной виртуальной машины для Windows для запуска своих двоичных файлов на хосте Linux (поскольку Windows не является открытым исходным кодом и требует лицензирования), таким образом, единственный способ запустить собственные контейнеры Windows - это на хосте Windows.

коротко и просто: нет

Контейнеры предназначены для виртуализации ядра / ОС.

Это группа процессов, которые вы запускаете отдельно в контейнере хостов, который совместно использует ядро. Если этот контейнерный хост является демоном Linux, он не может совместно использовать ядро Windows, в котором нуждается образ наносервера

может быть - если вы используете kubernetes: https://kubernetes.io/docs/getting-started-guides/windows/