O Windows nanoserver pode ser executado dentro do Linux docker?

https://msdn.microsoft.com/en-us/virtualization/windowscontainers/deployment/deployment_nano fala sobre a execução de uma imagem nanoserver docker no Windows:

docker pull microsoft / nanoserver

Isso significa que devemos ser capazes de executar o nanoserver em qualquer lugar que o Docker execute(por exemplo, Linux)?

Os contêineres fornecem isolamento de processo em um sistema operacional compartilhado, em vez de isolamento de sistema operacional em hardware compartilhado que você obtém com VMs. Como o sistema operacional é compartilhado, o sistema operacional host precisa ser capaz de executar os binários desejados. Você verá isso na arquitetura do mecanismo docker e na arquitetura da imagem que deseja executar, eles devem ser compatíveis:

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

Se você tentar executar uma arquitetura que não seja compatível com seu host, receberá um erro porque o formato binário não é reconhecido pelo kernel:

$ 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"

As versões de desktop do Docker e a versão do Windows Server do Docker incluem uma VM Linux sob as capas para executar contêineres Linux (os contêineres Linux são o ambiente de contêiner dominante, portanto, o Docker implementa isso usando o Linuxkit, para simplificar o fluxo de trabalho do desenvolvedor). Para o Windows, há um switch no mecanismo para usar a VM do Linux ou executar contêineres nativos do Windows.

No entanto, o Docker não possui uma VM incorporada Para Windows para executar seus binários em um host Linux (já que o Windows não é de código aberto e exigiria licenciamento), portanto, a única maneira de executar contêineres nativos do Windows é em um host do Windows.

curto e simples: não

Os Containers são sobre virtualização do Kernel / OS.

É um grupo de processos que você executa distintamente em hosts de contêiner que compartilham o kernel. Se esse host de contêiner for um Linux deamon, ele não poderá compartilhar o kernel do windows, que a imagem do nanoserver precisa

talvez - se você estiver executando o kubernetes: https://kubernetes.io/docs/getting-started-guides/windows/