zoukankan      html  css  js  c++  java
  • Windows上的Linux容器

    翻译自:https://docs.microsoft.com/en-us/virtualization/windowscontainers/deploy-containers/linux-containers

    Linux容器占整个容器生态系统的很大比例,是开发人员体验和生产环境的基础。但是,由于容器与容器主机共享内核,因此不能直接在Windows上运行Linux容器。这是虚拟化的发展方向。

    现在可以使用Docker for Windows和Hyper-V这两种方法运行Linux容器:

    1. 在完整的Linux VM(虚拟机)中运行Linux容器 - Docker在Windows上的通用做法。
    2. 使用Hyper-V隔离(LCOW)运行Linux容器- 这是Docker for Windows中的新选项。

    本文概述了每种方法的工作原理,提供了何时选择哪种解决方案,分享工作进展。

    Moby VM 中的Linux容器

    要在Linux VM中运行Linux容器,请按照Docker的入门指南中的说明进行操作。

    Docker已经能够在Windows桌面上运行Linux容器,因为它是在2016年首次发布(在Hyper-V隔离或LCOW可用之前),使用在Hyper-V上运行的基于LinuxKit的虚拟机。

    在此模型中,Docker Client在Windows桌面上运行,但在Linux VM上调用Docker守护程序(Docker Daemon)。

    Moby VM as the container host

    在此模型中,所有Linux容器共享一个基于Linux的容器主机并且所有Linux容器:

    彼此和Moby VM共享内核,但不与Windows主机共享。
    与Linux上运行的Linux容器具有一致的存储和网络属性(因为它们在Linux VM上运行)。

    这也意味着Linux容器主机(Moby VM)需要运行Docker守护程序和所有Docker守护程序的依赖项。

    要查看您是否正在使用Moby VM运行,请使用Hyper-V Manager UI或在管理员权限的PowerShell窗口中运行Get-VM,检查运行 Moby VM

    具有Hyper-V隔离的Linux容器

    要尝试LCOW(Linux container on windows),请按照此入门指南中的Linux容器说明进行操作

    具有Hyper-V隔离功能的Linux容器在优化的Linux VM中运行每个Linux容器(LCOW),并且只有由操作系统来运行容器。与Moby VM方法相比,每个LCOW都有自己的内核和自己的VM沙箱。它们也是由Windows上的Docker直接管理的。

    Linux containers with Hyper-V isolation (LCOW)

    仔细研究一下Moby VM方法和LCOW之间的容器管理有何不同,在LCOW模型中,容器管理保留在Windows上,每个LCOW管理都通过GRPC和containerd进行。这意味着用于LCOW的Linux发行版容器可以拥有更小的体积。目前,我们正在使用LinuxKit来优化发行版容器的使用,但其他项目如Kata也正在构建类似的高度调整的Linux发行版(Clear Linux)。

    以下是每个LCOW的详细信息:

    LCOW architecture

    要查看您是否正在运行LCOW,请导航至 C:Program FilesLinux Containers 。如果Docker配置为使用LCOW,那么这里将包含一些文件,其中包含在每个Hyper-V容器中运行的最小LinuxKit发行版。请注意,优化的VM组件小于100 MB,远小于Moby VM中的LinuxKit映像。

    工作进展

    LCOW正在积极发展中。跟踪GitHub上 Moby项目的持续进展

    绑定 mounts

    docker run -v ...绑定卷并将文件存储在Windows NTFS文件系统上,因此POSIX操作需要进行一些转换。某些文件系统操作当前已部分或未实现,这可能会导致某些应用程序不兼容。

    这些操作当前不适用于装入卷:

    • MkNod
    • XAttrWalk
    • XAttrCreate
    • Lock
    • Getlock
    • Auth
    • Flush
    • INotify

    还有一些尚未完全改善:

    • GetAttr - Nlink计数始终报告为2
    • Open - 仅实现ReadWrite,WriteOnly和ReadOnly

    这些应用程序都需要卷映射,无法正常启动或运行。

    • MySQL
    • PostgreSQL
    • WordPress
    • Jenkins
    • MariaDB
    • RabbitMQ

    额外的信息

    Docker blog describing LCOW

    Linux Container Video

    LinuxKit LCOW-kernel plus build instructions

    何时使用Moby VM vs LCOW

    何时使用Moby VM

    现在,我们建议将Moby VM方法运行Linux容器给以下人员:

    想要一个稳定的容器环境。这是Docker for Windows默认的。
    运行Windows或Linux容器,但很少同时运行。
    Linux容器之间有复杂或自定义的网络要求。
    Linux容器之间不需要内核隔离(Hyper-V隔离)。

    何时使用LCOW

    现在,我们向以下人士推荐LCOW:

    1. 想要测试我们的最新技术。
    2. 同时运行Windows和Linux容器。
    3. Linux容器之间需要内核隔离(Hyper-V隔离)。

    我们考虑的其他选择

    当我们研究在Windows上运行Linux容器的方法时,我们考虑了WSL。最终,我们选择了基于虚拟化的方法,以便Windows上的Linux容器与Linux上的Linux容器保持一致。使用Hyper-V还可以使LCOW更安全。我们可能会在将来重新评估,但目前,LCOW将继续使用Hyper-V。

    如果您有想法,请通过GitHub或UserVoice发送反馈。我们特别感谢您对您希望看到的具体体验的反馈。

    译者 PS:今天是情人节,,单身狗在写博客 >.<

  • 相关阅读:
    深入剖析RocketMQ源码-NameServer
    Percolator模型及其在TiKV中的实现
    源码解读Dubbo分层设计思想
    vivo营销自动化技术解密|开篇
    Node.js 应用全链路追踪技术——[全链路信息获取]
    Linux系统 usermod -a -G 不重启 立即生效
    安装Docker和Docker-Compose工具
    linux 启动停止jar
    check_ffmpeg_status
    shell 的字符完全匹配
  • 原文地址:https://www.cnblogs.com/chasingdreams2017/p/10381017.html
Copyright © 2011-2022 走看看