使用Docker for Windows时,您必须选择使用Windows或Linux容器,但不能同时使用这两种容器。这是什么技术原因?这有点违反直觉,因为每个容器都有自己独立的操作系统。
答案 0 :(得分:2)
Windows计算机上的Docker生态系统包含多个组件。
一个是Docker命令行:用于一切管理的docker
命令。第二个是Docker守护进程 - A self-sufficient runtime for containers
,核心。
Linux容器和Windows容器的Docker守护程序不同,但它们在同一管道上侦听来自docker客户端的连接。因此需要停止其他人才能开始。这是您要求的技术原因。
但是,你可以观察到容器是从ex开始的。在MobyLinuxVM中,当您切换到Windows容器时,它仍然可以运行并可用于连接。这里唯一的事情就是你无法管理它们,因为Windows的Docker守护进程不知道如何在MobyLinuxVM中管理Linux容器。
更新:如this post中所述,
Docker for Windows 18.02现在支持使用单个Docker守护程序通过LCOW并行运行的Linux和Windows容器。
实际上现在你可以使用一个docker守护程序来管理这两个世界,它只是在--platform
中使用新的docker pull
标志。
答案 1 :(得分: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上你可以&#34;可以&#34;同时运行linux和windows容器 - 您可以使用docker-machine
命令创建运行Linux容器的其他基于Linux的虚拟机。然后,你可以将它们连接到一个swarm中,并且只需一个良好的意愿,你就可以在同一台机器上同时运行linux和windows容器。
docker
客户端命令本身可以连接到linux或windows docker-server和&#34; manage&#34;两者 - 检查docker login
- 它在服务器配置中广泛使用。
但是如上所述,真正运行的linux和windows容器彼此相邻处于预览状态。