https://msdn.microsoft.com/en-us/virtualization/windowscontainers/deployment/deployment_nano говорит о запуске образа докера наносервера под Windows:
докер тянуть microsoft / nanoserver
Означает ли это, что мы должны иметь возможность запускать наносервер везде, где работает Docker (например, Linux)?
Контейнеры обеспечивают изоляцию процессов в общей ОС, а не изоляцию ОС на общем оборудовании, которое вы получаете с виртуальными машинами. Поскольку ОС является общей, ОС хоста должна иметь возможность запускать нужные двоичные файлы. Вы увидите это в архитектуре движка докеров и в архитектуре образа, который вы хотите запустить, они должны быть совместимы:
$ docker system info --format '{{.OSType}} {{.Architecture}}'
linux x86_64
$ docker image inspect busybox --format '{{.Os}} {{.Architecture}}'
linux amd64
Если вы попытаетесь запустить архитектуру, несовместимую с вашим хостом, вы получите сообщение об ошибке, потому что двоичный формат не распознается ядром:
$ docker image pull --platform arm64 busybox:latest
latest: Pulling from library/busybox
acafde7ce2e7: Pull complete
Digest: sha256:2a03a6059f21e150ae84b0973863609494aad70f0a80eaeb64bddd8d92465812
Status: Downloaded newer image for busybox:latest
$ docker run -it --rm busybox:latest echo hello
standard_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, которое требуется образу наносервера.
возможно - если вы используете кубернеты: https://kubernetes.io/docs/getting-started-guides/windows/