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.
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