https://msdn.microsoft.com/en-us/virtualization/windowscontainers/deployment/deployment_nano讨论在Windows下运行nanoserver docker镜像:
docker pull microsoft/nanoserver
这是否意味着我们应该能够在Docker运行的任何地方运行nanoserver(例如Linux)?
容器在共享操作系统上提供进程隔离,而不是在VM上共享硬件上的操作系统隔离.由于OS是共享的,因此主机OS需要能够运行所需的二进制文件.您将在docker引擎的体系结构和要运行的映像的体系结构中看到这一点,它们必须兼容:
@H_502_11@$docker system info --format '{{.OSType}} {{.Architecture}}'
linux x86_64
$docker image inspect busyBox --format '{{.Os}} {{.Architecture}}'
linux amd64
原文链接:https://www.f2er.com/windows/367757.html如果您尝试运行与主机不兼容的体系结构,则会出现错误,因为内核无法识别二进制格式:
@H_502_11@$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 VM(Linux容器是主要的容器环境,所以Docker使用Linuxkit实现这一点,以简化开发人员的工作流程).对于Windows,引擎中有一个开关用于使用Linux VM或运行本机Windows容器.
但是,Docker没有用于Windows的嵌入式VM在Linux主机上运行其二进制文件(因为Windows不是开源的并且需要许可),因此运行Windows本机容器的唯一方法是在Windows主机上.