翻译自:https://docs.microsoft.com/en-us/virtualization/windowscontainers/deploy-containers/linux-containerslinux
Linux容器占整个容器生态系统的很大比例,是开发人员体验和生产环境的基础。可是,因为容器与容器主机共享内核,所以不能直接在Windows上运行Linux容器。这是虚拟化的发展方向。git
如今可使用Docker for Windows和Hyper-V这两种方法运行Linux容器:github
本文概述了每种方法的工做原理,提供了什么时候选择哪一种解决方案,分享工做进展。docker
要在Linux VM中运行Linux容器,请按照Docker的入门指南中的说明进行操做。windows
Docker已经可以在Windows桌面上运行Linux容器,由于它是在2016年首次发布(在Hyper-V隔离或LCOW可用以前),使用在Hyper-V上运行的基于LinuxKit的虚拟机。安全
在此模型中,Docker Client在Windows桌面上运行,但在Linux VM上调用Docker守护程序(Docker Daemon)。网络
在此模型中,全部Linux容器共享一个基于Linux的容器主机而且全部Linux容器:ide
彼此和Moby VM共享内核,但不与Windows主机共享。
与Linux上运行的Linux容器具备一致的存储和网络属性(由于它们在Linux VM上运行)。测试
这也意味着Linux容器主机(Moby VM)须要运行Docker守护程序和全部Docker守护程序的依赖项。优化
要查看您是否正在使用Moby VM运行,请使用Hyper-V Manager UI或在管理员权限的PowerShell窗口中运行Get-VM
,检查运行 Moby VM
要尝试LCOW(Linux container on windows),请按照此入门指南中的Linux容器说明进行操做
具备Hyper-V隔离功能的Linux容器在优化的Linux VM中运行每一个Linux容器(LCOW),而且只有由操做系统来运行容器。与Moby VM方法相比,每一个LCOW都有本身的内核和本身的VM沙箱。它们也是由Windows上的Docker直接管理的。
仔细研究一下Moby VM方法和LCOW之间的容器管理有何不一样,在LCOW模型中,容器管理保留在Windows上,每一个LCOW管理都经过GRPC和containerd进行。这意味着用于LCOW的Linux发行版容器能够拥有更小的体积。目前,咱们正在使用LinuxKit来优化发行版容器的使用,但其余项目如Kata也正在构建相似的高度调整的Linux发行版(Clear Linux)。
如下是每一个LCOW的详细信息:
要查看您是否正在运行LCOW,请导航至 C:\Program Files\Linux Containers
。若是Docker配置为使用LCOW,那么这里将包含一些文件,其中包含在每一个Hyper-V容器中运行的最小LinuxKit发行版。请注意,优化的VM组件小于100 MB,远小于Moby VM中的LinuxKit映像。
LCOW正在积极发展中。跟踪GitHub上 Moby项目的持续进展
docker run -v ...
绑定卷并将文件存储在Windows NTFS文件系统上,所以POSIX操做须要进行一些转换。某些文件系统操做当前已部分或未实现,这可能会致使某些应用程序不兼容。
这些操做当前不适用于装入卷:
还有一些还没有彻底改善:
这些应用程序都须要卷映射,没法正常启动或运行。
LinuxKit LCOW-kernel plus build instructions
如今,咱们建议将Moby VM方法运行Linux容器给如下人员:
想要一个稳定的容器环境。这是Docker for Windows默认的。
运行Windows或Linux容器,但不多同时运行。
Linux容器之间有复杂或自定义的网络要求。
Linux容器之间不须要内核隔离(Hyper-V隔离)。
如今,咱们向如下人士推荐LCOW:
当咱们研究在Windows上运行Linux容器的方法时,咱们考虑了WSL。最终,咱们选择了基于虚拟化的方法,以便Windows上的Linux容器与Linux上的Linux容器保持一致。使用Hyper-V还可使LCOW更安全。咱们可能会在未来从新评估,但目前,LCOW将继续使用Hyper-V。
若是您有想法,请经过GitHub或UserVoice发送反馈。咱们特别感谢您对您但愿看到的具体体验的反馈。
译者 PS:今天是情人节,,单身狗在写博客 >.<