V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
sniperking1234
V2EX  ›  Docker

想要了解 Docker 虚拟化相关的原理和实现,应该从什么地方入手?

  •  
  •   sniperking1234 · 2020-07-14 19:55:52 +08:00 · 2239 次点击
    这是一个创建于 1353 天前的主题,其中的信息可能已经有所发展或是发生改变。

    虚拟化都涉及到了哪些技术呢,有没有合适的书籍推荐下

    11 条回复    2020-07-15 12:31:27 +08:00
    xyjincan
        1
    xyjincan  
       2020-07-14 20:01:06 +08:00   ❤️ 5
    docker 不是虚拟化

    容器 = cgroup + namespace + rootfs + 容器引擎

    Cgroup: 资源控制
    namespace: 访问隔离
    rootfs:文件系统隔离。镜像的本质就是一个 rootfs 文件
    容器引擎:生命周期控制

    链接: https://www.jianshu.com/p/ab423c3db59d
    sniperking1234
        2
    sniperking1234  
    OP
       2020-07-14 20:05:57 +08:00
    @xyjincan 叫容器化比较合适?
    icy37785
        3
    icy37785  
       2020-07-14 20:17:41 +08:00 via iPhone
    @sniperking1234 #2 容器就是容器,为什么要叫他容器化...
    locoz
        4
    locoz  
       2020-07-14 21:37:03 +08:00 via Android
    @sniperking1234 #2 “容器化”是动词,不是名词,容器就是容器😂
    chris89
        5
    chris89  
       2020-07-14 21:43:54 +08:00
    好像刚开始,都容易把容器 和 虚拟化搞混,其实这是两个不同的概念。
    UN2758
        6
    UN2758  
       2020-07-14 21:57:21 +08:00
    虚拟化和容器化确实是不同的,但是突然发现自己很难清楚的说出区别..
    leimao
        7
    leimao  
       2020-07-14 22:13:48 +08:00 via iPhone
    这些都是不怎么涉及应用的底层细节,Docker 官网应该就够了吧
    RainyH2O
        8
    RainyH2O  
       2020-07-15 01:37:03 +08:00   ❤️ 2
    @xyjincan 容器化就是虚拟化,非要说的更严谨一些叫做操作系统级虚拟化。
    所谓虚拟,无非就是指不真实存在的东西。虚拟化通过建立一个虚拟层,把底层的平台、设备、资源等真实存在的事物整合到一起,再通过这个虚拟层抽象出来一些新概念,提供给上层应用一个新的视图以便其更容易的利用底层的功能。
    就好比容器这个概念,可不就是把 cgroup 、namespace 、rootfs 等这些操作系统提供的东西给统一成一个叫做“容器”的新概念给上面的应用去使用?
    其他层次的虚拟化同理。
    mmdsun
        9
    mmdsun  
       2020-07-15 02:13:43 +08:00 via Android
    Docker 底层基于 Linux 内核中 Namespaces 、CGroups 等功能的。
    Windows 有 Hyper-V 实现虚拟化,macos 有 HyperKit 。
    再底层一点可以找点 Intel VT,amd-v 的参考。

    docker 其应该属于操作系统虚拟化的范畴,也就是在由操作系统提供虚拟化的支持。叫它是一款以容器虚拟化技术为基础的软件也行。

    容器化更多的是偏向同一操作系统于一个资源隔离应用,应用程序对机器有感知。虚拟机里应用对真实住宿无感知。
    cheng6563
        10
    cheng6563  
       2020-07-15 08:51:59 +08:00 via Android
    容器就是一个沙盒,内核什么的都是用的主机的,只是进行了资源隔离。
    虚拟化是直接运行另一个操作系统。
    unixeno
        11
    unixeno  
       2020-07-15 12:31:27 +08:00 via Android
    《自己动手写 docker 》
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1189 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 23:11 · PVG 07:11 · LAX 16:11 · JFK 19:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.