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

2020-07-14 19:55:52 +08:00
 sniperking1234

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

2270 次点击
所在节点    Docker
11 条回复
xyjincan
2020-07-14 20:01:06 +08:00
docker 不是虚拟化

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

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

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

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

容器化更多的是偏向同一操作系统于一个资源隔离应用,应用程序对机器有感知。虚拟机里应用对真实住宿无感知。
cheng6563
2020-07-15 08:51:59 +08:00
容器就是一个沙盒,内核什么的都是用的主机的,只是进行了资源隔离。
虚拟化是直接运行另一个操作系统。
unixeno
2020-07-15 12:31:27 +08:00
《自己动手写 docker 》

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/690035

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX