你可以在新的Windows 10(Ubuntu)bash用户空间本地运行Docker吗?

Modified on: Wed, 13 Nov 2019 21:40:01 +0800

我的理解是,在其他操作系统上运行docker的主要限制是使Linux网络容器成为可能。 (当然对于Macs)。

最近微软宣布测试Ubuntu linux 用户模式在Windows 10上本机运行。这可以在Windows上运行以ELF格式编译的二进制文件(与需要编译的cygwin不同。)

我的问题是:你能在新的Windows 10(Ubuntu)bash用户空间上本地运行Docker吗?

作者:Hawkeye

最佳答案

截至目前(2016年4月),答案是:

我们还不知道(但可能不是)。

事实

  • Windows 10现在可以运行各种Linux程序(其中包括
    他们是Bash shell和各种文本实用程序)。这些不是端口
    (即重新编译的版本,例如在Cygwin中),它们是
    在典型的Linux系统上运行的ELF二进制文件。在
    在这种情况下,它们来自Ubuntu。
  • 为了实现这一点,Windows 10被修改为接受Linux系统调用(系统调用),并且能够加载和运行ELF二进制文件(Scott Hanselman的评论)。这意味着可以运行未经修改的Linux可执行文件,它们将根据需要加载未修改的共享库,Windows将它们作为Windows进程运行。
  • 每当这样的Linux程序想要与内核交互时,它就会发出系统调用(或者让库来执行)。这(可能)是在Linux上运行的唯一区别:在Linux上运行时,Linux内核处理这些调用;在Windows 10上,Windows 10内核会改为使用它。

猜测

所以问题是Docker需要的系统调用(对于chroot和名称空间等)是否已实现。答案是这可能是“不”。 Docker需要相当复杂(和特定于Linux)的功能来进行流程和资源管理以及进程隔离。虽然可能在Windows上复制所有这些,但这将是很多工作,并且由于此Windows功能的目标似乎是运行Linux用户空间程序,因此它们似乎不太可能完成所有工作(并保密)

但是,就我所知,没有任何确切的信息。

现有Docker端口

当然,如果微软决定在Windows 10中支持Docker,他们可能会提供它。将Docker移植到不同的内核有一些先例:

  • FreeBSD有一个Docker端口。它被标记为“实验性”,但似乎在原则上起作用。它可以使用Docker存储库中未经修改的Docker容器,这意味着它实际上为图像提供了类似Linux的主机环境。
  • 目前正在进行一项将Docker移植到Windows(特别是Windows Server 2016)的项目 - 请参阅Docker博客条目从2015年8月开始。但是,与上面的FreBSD端口不同,这将是一个端口,允许Docker在Windows上运行Windows映像,而不是Windows上的Linux映像。 感谢RöryMcCune指出这一点。
作者:,sleske

相关问答

添加新评论