
最近在看 Docker,以前以为 Docker 是虚拟机,但是看了一下并不是,想了解一下是什么原理,但是找了一顿感觉都讲的很虚,什么集装箱啊,码头的,感觉讲不到点上,特来请教一下。
1 precisi0nux Apr 14, 2018 via iPhone chroot,讲完了。 |
2 sundev Apr 14, 2018 个人愚见,可以从 chroot 命令来理解 docker。 可以手动实现一下,理解会更深刻! |
3 looplj Apr 14, 2018 via Android wsl 是,docker 不是。 |
4 Luckyray Apr 14, 2018 cgroup 了解一哈,另外与虚拟机的区别这个图很清晰了,虚拟机是系统上面再来一层系统,Docker 是做资源隔离。另外 Windows 和 Mac 上的 Docker 似乎还是用 Linux 虚拟机实现的  |
5 des Apr 14, 2018 via Android @ZSeptember 很遗憾 wsl 并不是虚拟机 docker 的话,可以去了解下 chroot、namespace,简单来说就是资源隔离 硬要相比的话和 windows 上面的 sandboxie 像一点 |
6 Luckyray Apr 14, 2018 咦,知乎的图片外链不行呀,我是指这个回答 https://www.zhihu.com/question/48174633/answer/109868326 的第一张图 |
7 ech0x Apr 14, 2018 via iPhone docker 是容器技术。你可以理解成内核提供的资源隔离,所以 docker 是强依赖 Linux 的。 WSL 应该是微软 Clean room 实现的一个 Linux 内核,是直接在 .NT 内核里实现的。 个人理解 |
8 cyspy Apr 14, 2018 via Android WSL 和 wine 类似,是翻译系统调用 |
9 roychan Apr 14, 2018 WSL 是个兼容层,Docker 是个容器。 |
10 20has Apr 14, 2018 via Android 内核空间 kernel 用户空间 rootfs 老铁,你这了解也太浅了吧,学 docker 至少得接触下 k8s 才算了解,嘿嘿 |
11 binbinyouliiii OP @20has #10 老哥,我又不开发 Docker,久仰 Docker 大名然后了解一下而已啊 |
12 mritd Apr 15, 2018 目前国内容器领域的书没几本靠谱的,最简单的办法就是实践,撸文档 |
13 ryd994 Apr 15, 2018 via Android @ech0x wsl 不是内核,脱离 Windows 无法工作。wsl 是把 Linux 的 syscall 翻译到 Windows 下执行。确实不能偷看 Linux,但是也不需要。因为这是翻译又不是真内核。 按微软的人的脾性,怕是真能看也不屑于去看。 docker 的核心在于隔离:namespace 和 chroot 都是为了隔离。但是隔离的只有用户态的各种。内核是同一个内核在跑。 |
15 naver1 Apr 15, 2018 当成虚拟机就行了。 |
16 gnaggnoyil Apr 15, 2018 @ZSeptember WSL 不是.Linux 子系统和 Win32 子系统是并列的,不存在谁用来实现谁的关系 |
17 ryd994 Apr 17, 2018 via Android @LosLord 除非你知道怎么 kpatch,否则都是重启才加载新内核。而宿主机重启又不管容器内的。那些个内核包,装了也是没用的文件。因为没可能加载他们。 |
18 ryd994 Apr 17, 2018 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 虚拟化和容器化差别大了去了 |
20 gnaggnoyil Apr 19, 2018 @ryd994 我说的就是子系统啊…… |
21 Rimifon Sep 10, 2019 WSL 应该是基于 docker 的灵感。想想一个 alpine 才 5M,却能跑起一个 docker 服务。因此,WSL 只需要做好这 5M 的系统能干的活,就能像 docker 一样跑起 Linux。 |