Может ли наносервер Windows работать внутри докера Linux?

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

Докер Пул Майкрософт / Наносервер

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

3 ответа

Решение

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

$ 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, в котором нуждается образ nanoserver

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

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