Docker:Linux上使用Linux

时间:2017-11-28 12:57:22

标签: linux windows docker

目前的Linux容器与Windows上未来的Linux Cotnainer有什么区别? Linuxkit目前是否使用过?

我正在使用当前版本的Docker for Windows:https://docs.docker.com/docker-for-windows/install/

问题:

  1. 当我查看Hyper-V时,我可以看到一个VM:MobyLinuxVM 这个vm是用Linuxkit构建的吗?

  2. 未来的架构是否有多个虚拟机,每个虚拟机托管一个容器?<​​/ p>

2 个答案:

答案 0 :(得分:2)

我想知道同样的,虽然文档稀疏(沿着with some name changing继续),答案取决于检查的确切时间(因为Windows上的Docker刚刚经历了重大更改)我会说

  

MobyLinuxVM这个vm是用Linuxkit构建的吗?

Docker Blog表示as of Docker for Windows 17.10 this VM is based on LinuxKit。旧版本的Docker for Windows(或旧版Windows:不是Windows Server 1709和Windows 10 Fall Creators Update)的过程不同(Docker Toolbox),因为它使用VirtualBox来运行boot2docker图片。除了根VM映像的更改之外还有一些其他更改(例如,运行docker守护程序的位置)。有关更多见解,请参阅Linux containers on Windows - the Inside Storythis blogpost

  

未来的架构是否有多个虚拟机,每个虚拟机托管一个容器?<​​/ p>

您是说Windows主机上的每个Linux容器是否都启动了自己的MobyLinuxVM?再次引用every time you start a Linux container Docker launches a minimal Hyper-V hypervisor running a VM with a Linux kernel, runc and the container processes running on top.#include "stdlib.h" #include "string.h" #include "stdio.h" const char * strconcat(const char *p1, const char *p2) { static __thread char buffer[2048]; snprintf(buffer, 2048, "%s%s", p1, p2); return buffer; } int main(int argc, char** argv) { const char *p1 = "hello "; const char *p2 = "world!"; printf("%s\n", strconcat(p1, p2)); }

我在Windows 17.03(以旧方式)下尝试使用Docker for Windows版本17.12.0-ce-win47(15139),即使运行多个Linux docker容器,也只创建了一个MobyLinuxVM。

答案 1 :(得分:1)

  

MobyLinuxVM这个vm是用Linuxkit构建的吗?

MobyLinux是LinuxKit的前身

  

未来的架构是否有多个虚拟机,每个虚拟机托管一个容器?<​​/ p>

这就是LCOW目前的工作原理(尽管“虚拟机”不是用户可见的 - 实际的虚拟机管理程序虚拟机涉及运行容器这一事实是一个实现细节)。