想问一下, WSL 和 Docker 的原理是不是把原有系统的 API"翻译"过来? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
binbinyouliiii
V2EX    问与答

想问一下, WSL 和 Docker 的原理是不是把原有系统的 API"翻译"过来?

  •  
  •   binbinyouliiii 2018-04-14 20:52:47 +08:00 4382 次点击
    这是一个创建于 2747 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近在看 Docker,以前以为 Docker 是虚拟机,但是看了一下并不是,想了解一下是什么原理,但是找了一顿感觉都讲的很虚,什么集装箱啊,码头的,感觉讲不到点上,特来请教一下。

    21 条回复    2019-09-10 09:14:05 +08:00
    precisi0nux
        1
    precisi0nux  
       2018-04-14 21:03:22 +08:00 via iPhone   1
    chroot,讲完了。
    sundev
        2
    sundev  
       2018-04-14 21:04:16 +08:00   1
    个人愚见,可以从 chroot 命令来理解 docker。
    可以手动实现一下,理解会更深刻!
    looplj
        3
    looplj  
       2018-04-14 21:04:36 +08:00 via Android   1
    wsl 是,docker 不是。
    Luckyray
        4
    Luckyray  
       2018-04-14 21:22:26 +08:00   1
    cgroup 了解一哈,另外与虚拟机的区别这个图很清晰了,虚拟机是系统上面再来一层系统,Docker 是做资源隔离。另外 Windows 和 Mac 上的 Docker 似乎还是用 Linux 虚拟机实现的
    ![docker]( https://pic2.zhimg.com/20006deca0fccda0d536edd626835e9e_r.jpg)
    des
        5
    des  
       2018-04-14 21:22:57 +08:00 via Android   1
    @ZSeptember 很遗憾 wsl 并不是虚拟机

    docker 的话,可以去了解下 chroot、namespace,简单来说就是资源隔离
    硬要相比的话和 windows 上面的 sandboxie 像一点
    Luckyray
    &bsp;   6
    Luckyray  
       2018-04-14 21:23:55 +08:00
    咦,知乎的图片外链不行呀,我是指这个回答 https://www.zhihu.com/question/48174633/answer/109868326 的第一张图
    ech0x
        7
    ech0x  
       2018-04-14 21:32:22 +08:00 via iPhone   1
    docker 是容器技术。你可以理解成内核提供的资源隔离,所以 docker 是强依赖 Linux 的。
    WSL 应该是微软 Clean room 实现的一个 Linux 内核,是直接在 .NT 内核里实现的。
    个人理解
    cyspy
        8
    cyspy  
       2018-04-14 21:39:43 +08:00 via Android   1
    WSL 和 wine 类似,是翻译系统调用
    roychan
        9
    roychan  
       2018-04-14 21:41:08 +08:00   1
    WSL 是个兼容层,Docker 是个容器。
    20has
        10
    20has  
       2018-04-14 21:44:47 +08:00 via Android
    内核空间 kernel
    用户空间 rootfs
    老铁,你这了解也太浅了吧,学 docker 至少得接触下 k8s 才算了解,嘿嘿
    binbinyouliiii
        11
    binbinyouliiii  
    OP
       2018-04-14 21:49:01 +08:00
    @20has #10 老哥,我又不开发 Docker,久仰 Docker 大名然后了解一下而已啊
    mritd
        12
    mritd  
       2018-04-15 00:16:26 +08:00
    目前国内容器领域的书没几本靠谱的,最简单的办法就是实践,撸文档
        13
    ryd994  
       2018-04-15 02:21:14 +08:00 via Android
    @ech0x wsl 不是内核,脱离 Windows 无法工作。wsl 是把 Linux 的 syscall 翻译到 Windows 下执行。确实不能偷看 Linux,但是也不需要。因为这是翻译又不是真内核。
    按微软的人的脾性,怕是真能看也不屑于去看。

    docker 的核心在于隔离:namespace 和 chroot 都是为了隔离。但是隔离的只有用户态的各种。内核是同一个内核在跑。
    ryd994
    LosLord
        14
    LosLord  
       2018-04-15 10:00:11 +08:00 via Android
    @ryd994 话说 Docker 容器里面的“系统”升级了内核也跟主系统不影响吗?
    DT27
        15
    DT27  
       2018-04-15 10:44:35 +08:00
    当成虚拟机就行了。
    gnaggnoyil
        16
    gnaggnoyil  
       2018-04-15 18:33:21 +08:00
    @ZSeptember WSL 不是.Linux 子系统和 Win32 子系统是并列的,不存在谁用来实现谁的关系
    ryd994
        17
    ryd994  
       2018-04-17 16:26:16 +08:00 via Android
    @LosLord 除非你知道怎么 kpatch,否则都是重启才加载新内核。而宿主机重启又不管容器内的。那些个内核包,装了也是没用的文件。因为没可能加载他们。
    ryd994
        18
    ryd994  
       2018-04-17 16:28:20 +08:00 via Android
    @gnaggnoyil 既然你说是并列,那麻烦解释一下 subsystem 是什么意思?
    WSL provides a Linux-compatible kernel interface developed by Microsoft (containing no Linux kernel code[1]), which can then run a GNU userland on top of it,

    @DT27 虚拟化和容器化差别大了去了
    DT27
        19
    DT27  
       2018-04-17 16:56:05 +08:00
    @ryd994 #18 作为用户,我不管它具体是怎么实现的,用起来确实跟虚拟机一样。。。
    曾试过 win 版的 docker,确实是建了个虚拟机啊= =、
    gnaggnoyil
        20
    gnaggnoyil  
       2018-04-19 08:43:04 +08:00
    @ryd994 我说的就是子系统啊……
    Rimifon
        21
    Rimifon  
       2019-09-10 09:14:05 +08:00
    WSL 应该是基于 docker 的灵感。想想一个 alpine 才 5M,却能跑起一个 docker 服务。因此,WSL 只需要做好这 5M 的系统能干的活,就能像 docker 一样跑起 Linux。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5448 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 07:13 PVG 15:13 LAX 00:13 JFK 03:13
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86