【问题标题】:Why does Docker for Windows make you pick either Windows or Linux containers?为什么 Docker for Windows 让你选择 Windows 或 Linux 容器?
【发布时间】:2018-05-02 15:03:44
【问题描述】:

在使用 Docker for Windows 时,您必须选择使用 Windows 或 Linux 容器,但不能同时使用这两种容器。这样做的技术原因是什么?这有点违反直觉,因为每个容器都有自己独立的操作系统。

【问题讨论】:

    标签: docker docker-for-windows


    【解决方案1】:

    Docker for Windows 上的 Linux 容器不是由 Windows 本身处理的,而是使用 Hyper-V Linux VM - MobyLinuxVM。因此有必要在 Linux 和 Windows 之间切换。

    但是,从 Windows 1709 和边缘版本的 Docker 开始,您可以在 Windows 上试用 linux 容器 - 请参阅:https://blog.docker.com/2017/09/docker-windows-server-1709/

    更新

    正如@v.karbovnichy 提出的那样,从技术上讲,在 Docker for Windows 上,您“可以”同时运行 linux 和 windows 容器 - 您可以使用 docker-machine 命令创建额外的基于 linux 的虚拟机来运行您的 linux 容器。然后,您可以将它们连接成一个集群,并且怀着良好的意愿,您将在同一台机器上同时运行 linux 和 windows 容器。

    docker 客户端命令本身可以连接到 linux 或 windows docker-server 并“管理”它们两者 - 检查 docker login - 它广泛用于服务器配置。

    但是如上所述,真正运行的 linux 和 windows 容器彼此相邻处于预览状态。

    【讨论】:

      【解决方案2】:

      Windows 机器上的 Docker 生态系统包含多个组件。 一种是 Docker 命令行:用于一切管理的 docker 命令。第二个是 Docker 守护进程 - A self-sufficient runtime for containers,核心。

      Linux 容器和 Windows 容器的 Docker 守护进程不同,但它们在同一管道上侦听来自 docker 客户端的连接。因此,需要停止一个以启动另一个。这是您要求的技术原因。

      但是,您可以观察到容器为 ex 启动。在 MobyLinuxVM 中,当您切换到 Windows 容器时,VM 仍在运行并可用于连接。唯一的问题是您无法管理它们,因为 Windows 的 Docker 守护程序不知道如何在 MobyLinuxVM 中管理 Linux 容器。

      更新:this post中所述,

      Docker for Windows 18.02 现在支持使用单个 Docker 守护程序通过 LCOW 并行运行 Linux 和 Windows 容器。

      所以实际上现在您可以使用一个 docker 守护进程来管理两个世界,只需在 docker pull 中使用新的 --platform 标志。

      【讨论】:

        猜你喜欢
        • 2017-05-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-09
        • 2018-01-05
        • 1970-01-01
        • 2016-11-22
        • 1970-01-01
        相关资源
        最近更新 更多