V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
rpish
V2EX  ›  黑魔法

WSL1 根本不是什么黑魔法 而是抄袭 Docker 而已吧

  •  
  •   rpish · Mar 30, 2020 · 8555 views
    This topic created in 2221 days ago, the information mentioned may be changed or developed.

    WSL2 快发布了 但是今天上操作系统课讲到虚拟机 看到课件上的虚拟机结构图 突然想到 Docker 简化了虚拟机的系统层 直接调系统 API 模拟了一个虚拟环境 又想到 WSL1 好像也是那么做的 查了下发布时间 Docker13 年 WSL16 年... 所以 WSL1 根本不像知乎上吹的是什么黑魔法 不过是抄袭了 Docker 的想法 最后还因为坑太多填不上 放弃了 转用更传统的办法

    21 replies    2020-06-23 02:20:01 +08:00
    codehz
        1
    codehz  
       Mar 30, 2020 via Android   ❤️ 13
    ??? docker 用的是 linux 内核的命名空间,cgroup,seccomp 等机制,和虚拟化没半毛钱关系,docker 事实上完全没有任何虚拟化的过程

    wsl 1 是直接造了一个新的内核兼容层实现,也和虚拟化没半毛钱关系( wsl2 才是虚拟化)

    你想说的那种模拟,叫做用户态虚拟化,qemu 有实现,但是这依赖于同系统,也就是实现 linux x86 跑 linux arm 的二进制,做不到让 windows 跑 linux 或者反过来
    jonah
        2
    jonah  
       Mar 30, 2020 via Android   ❤️ 1
    实际上 docker 才不是什么黑魔法,用 shell 脚本就能实现类似 docker 的功能
    maggch
        3
    maggch  
       Mar 30, 2020   ❤️ 2
    半瓶子咣当
    also24
        4
    also24  
       Mar 30, 2020 via Android   ❤️ 5
    Docker 可以粗略的理解为:
    以前你在 Linux 上运行 Linux 虚拟机,突然发现,诶两边都是 Linux 诶,那用同一份 Linux 内核不就好了嘛?
    于是 Docker 出现了。


    有一天楼主想做 WSL1 了:
    诶那我按照 Docker 的思路来做吧,首先我们共享一下 Linux 内核……
    诶?我 TM 是 Windows 啊哪儿来的 Linux 内核?
    binbinyouliiii
        5
    binbinyouliiii  
       Mar 30, 2020 via Android   ❤️ 3
    楼主要是不知道的话虚心请教也没人会说你,但是半瓶子水出来吹牛就是你的不对了
    Yvette
        6
    Yvette  
       Mar 30, 2020
    看标题我就猜到楼主是个学生
    CallMeReznov
        7
    CallMeReznov  
       Mar 30, 2020
    我如果是楼主,早被人打死了!
    westoy
        8
    westoy  
       Mar 30, 2020   ❤️ 1
    LXC 在角落里画圈圈
    Lonely
        9
    Lonely  
       Mar 30, 2020 via iPhone
    你是来搞笑的吗?就因为 wsl 发布时间晚所以就是抄 docker 的?
    reus
        10
    reus  
       Mar 30, 2020   ❤️ 1
    ……学艺不精就不要随便喷

    docker 基于 linux 的 namespace 机制,也就是隔离进程、网络、cgroup 等等,使用同样技术的用户态程序早就有了,lxc 。
    wsl 是实现了 linux 的系统调用,等于自己写了半个 linux 内核,类似的还有 linux 的 wine,只不过是兼容 windows 。
    murmur
        11
    murmur  
       Mar 30, 2020
    楼上的都喷完了,我就不喷了
    love4taylor
        12
    love4taylor  
    PRO
       Mar 30, 2020 via Android
    还真就什么人都有啊,见识了。
    ipwx
        13
    ipwx  
       Mar 30, 2020   ❤️ 1
    楼主看完评论大可以继续喷:

    “我觉得 WSL 抄袭了 wine……”
    jy02201949
        14
    jy02201949  
       Mar 30, 2020
    看到那么的人喷,我就放心了
    reus
        15
    reus  
       Mar 30, 2020
    还有一个类似 wsl 的东西是 google 的 gVisor: https://github.com/google/gvisor

    也是实现了部分 linux 的系统调用,当然,是跑在 linux 上的,目的和 wsl 不一样。
    est
        16
    est  
       Mar 30, 2020
    上课就专心听讲。不要乱发帖。
    kindjeff
        17
    kindjeff  
       Mar 30, 2020   ❤️ 1
    @ipwx #13 反向抄袭有点秀
    rpish
        18
    rpish  
    OP
       Apr 21, 2020
    @codehz
    @jonah
    @maggch
    @also24
    @binbinyouliiii
    @Yvette
    @CallMeReznov
    @westoy
    @Lonely
    @reus
    @murmur
    @Love4Taylor
    @ipwx
    @jy02201949
    @reus
    @est
    @kindjeff
    大二狗一枚 学艺不精 见笑了
    Docker 通过 namespace 实现 我看 liveoverflow 视频"自制 Docker"是知道的
    WSL1 是通过内核兼容层 不是像 WSL2 的虚拟化 这个我有提到了啊 是表述不清晰?

    我想表达的就是:
    1.WSL1 和 Docker 都是通过系统的 API 来模拟一个系统 而不是像 WSL2 直接虚拟化
    2.WSL1 在发布时间上比 Docker 晚 ==> 可能是抄袭它的想法

    我承认学艺不精,表述不好,但是标题用的是疑问句,不是陈述句,应该看得出来吧?
    上来嘲讽我也会啊,能不能麻烦给点指教.🙂(不带干货的无脑喷,我读小学的弟弟都行)

    @codehz 多谢指教: )
    ipwx
        19
    ipwx  
       Apr 21, 2020
    @rpish Docker 没有模拟另一个系统。Docker 用的是 Linux 内核的环境隔离功能,本身是内核功能的一部分。

    如果这还不够,那么想一下:用 WSL1 模拟 Linux,WSL1 要把所有 Linux 的 API 通过 Windows 系统重写一遍,还要想办法欺骗所有 Linux 程序,让它们以为它们运行在 Linux 下,难度可想而知。但是 Docker 使用 Linux 的内核隔离,没有重写任何 API,就是调用了内核原有的功能,包装了一下而已。
    rpish
        20
    rpish  
    OP
       Apr 21, 2020
    @ipwx 谢谢指点 知道我的问题了
    同样是调用系统 API 但是 WSL1 实在 NT 内核的基础上模拟出了一个 LINUX 内核 Docker 则是利用了 Linux 的特性进行了隔离
    思路上相似 但是实现难度天差地别
    fengdra
        21
    fengdra  
       Jun 23, 2020
    @rpish 思路上一点都不相似。linux namespace 的思路是在内核上划分子空间,实现资源隔离,一个内核当多个系统用; WSL1 是一个内核实现两套 API ( Windows API 和 Linux 子系统),和资源隔离没有关系,反而要保持两边资源访问的一致性。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5424 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 59ms · UTC 07:40 · PVG 15:40 · LAX 00:40 · JFK 03:40
    ♥ Do have faith in what you're doing.