【发布时间】:2018-05-02 15:03:44
【问题描述】:
在使用 Docker for Windows 时,您必须选择使用 Windows 或 Linux 容器,但不能同时使用这两种容器。这样做的技术原因是什么?这有点违反直觉,因为每个容器都有自己独立的操作系统。
【问题讨论】:
在使用 Docker for Windows 时,您必须选择使用 Windows 或 Linux 容器,但不能同时使用这两种容器。这样做的技术原因是什么?这有点违反直觉,因为每个容器都有自己独立的操作系统。
【问题讨论】:
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 容器彼此相邻处于预览状态。
【讨论】:
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 标志。
【讨论】: