Windows nanoserver 可以在 Linux docker 中运行吗?

Windows nanoserver 可以在 Linux docker 中运行吗?

https://msdn.microsoft.com/en-us/virtualization/windowscontainers/deployment/deployment_nano讨论了在 Windows 下运行 nanoserver docker 镜像:

docker pull 微软/纳米服务器

这是否意味着我们应该能够在 Docker 运行的任何地方(例如 Linux)运行纳米服务器?

答案1

容器在共享操作系统上提供进程隔离,而不是像虚拟机那样在共享硬件上提供操作系统隔离。由于操作系统是共享的,因此主机操作系统需要能够运行所需的二进制文件。您将在 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: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 VM,用于运行 Linux 容器(Linux 容器是主要的容器环境,因此 Docker 使用 Linuxkit 实现这一点,以简化开发人员的工作流程)。对于 Windows,引擎中有一个开关,用于使用 Linux VM 或运行本机 Windows 容器。

但是,Docker 没有为 Windows 提供嵌入式 VM,因此无法在 Linux 主机上运行其二进制文件(因为 Windows 不是开源的,需要许可)。因此运行 Windows 原生容器的唯一方法是在 Windows 主机上。

答案2

简而言之:没有

容器与内核/操作系统虚拟化有关。

这是一组在容器主机中单独运行的进程,它们共享内核。如果该容器主机是 Linux 守护进程,则它无法共享 Windows 内核,而纳米服务器映像需要 Windows 内核

答案3

也许 - 如果你正在运行 kubernetes:https://kubernetes.io/docs/getting-started-guides/windows/

相关内容