如何在Windows机器上运行Linux容器?——Docker桌面版实现

6
我已经在我的Windows 10笔记本上安装了Docker for Windows。现在,由于这个"Docker for Windows",我也可以在我的Windows 10笔记本上运行Linux容器。这是如何实现的?我有一些疑问,我有什么遗漏吗?
请参见下图以获得更好的可视性: Docker on Windows Machine running Linux container 1)我的机器是Windows 10,内核是Windows内核,对吗?
2)当我选择运行Linux容器选项时,我认为会在我的Windows 10机器的顶部运行一个Linux VM,然后在其上运行Linux容器。这正确吗?
3)如果在Windows机器的顶部运行了Linux VM,那么使用的是哪个内核?Linux VM内核还是Windows 10内核?
4)那么我们如何说容器不包括操作系统,因为对于Windows,它们正在运行Linux VM。
5)现在,如果我运行第二个容器,它会在已经运行的Linux VM的顶部运行,还是会再次启动一个新的Linux VM?我认为它将在同一个运行中的Linux VM上运行,但询问以消除任何困惑。
6)如果在Windows机器的顶部运行了Linux VM,那么我们是否可以对正在运行的Linux VM进行任何控制,例如Linux VM的版本等,还是它总是相同的,并且我们无法对其进行任何控制?
7)如果在Windows机器的顶部运行了Linux VM,那么Windows资源是否不可见于Linux VM,因此也不可见于容器?如果可见,则Linux VM如何与Windows Host通信?

很棒的问题! - Eugen Labun
1个回答

5

1) 我的机器是Windows 10,它有Windows内核。对吗?

A: 是的。

2) 当我选择运行Linux容器时,我认为一个Linux虚拟机在我的Windows 10机器上运行,并在其上运行Linux容器。这正确吗?

A: 是的。会有一个名为mobylinux的Hyper-V Linux虚拟机,您可以在Hyper-V管理器中看到它。

3) 如果在Windows机器的顶部运行Linux VM,那么使用的是哪个内核?是Linux VM内核还是Windows 10内核?

A: Hyper-V VM使用Linux内核。

4) 然后我们如何说容器不包括操作系统,因为对于Windows,它们正在运行Linux VM。

A: 不确定您从何处获得信息。Docker镜像仅具有文件系统,例如ubuntu16.04文件系统,但没有内核。当容器运行时,将使用镜像的文件系统并共享主机的内核(也许您的意思是它没有自己的内核,所以您称之为没有操作系统?)

5) 现在,如果我运行第二个容器,它是否会在已运行的Linux VM之上运行,还是会再次启动新的Linux VM?我认为它会在同一个正在运行的Linux VM上运行,但是问一下,以免有任何混淆。

A: 是的,它会再次在同一个Linux VM上运行。

6) 如果在Windows机器的顶部运行Linux VM,那么我们是否可以控制正在运行的Linux VM的版本等?还是它总是相同的,我们无法对其进行任何控制?

A: 不行,请参见此讨论,似乎不能ssh到VM,只能通过某些解决方案访问VM的文件系统,因此找不到任何更改内核或Linux发行版的方法。

7) 如果在Windows机器的顶部运行Linux VM,则Windows资源对Linux VM和容器不可见吗?如果可见,则Linux VM如何与Windows主机通信?

A: 理论上,您可以将Windows文件夹挂载到Linux VM,然后容器可以使用带有卷的Linux文件夹。而且Docker for Windows已经为您完成了这个功能,在任务栏中右键单击该图标,您可以看到以下内容,只需像图片中所示操作即可:

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接