WSL2 快发布了 但是今天上操作系统课讲到虚拟机 看到课件上的虚拟机结构图 突然想到 Docker 简化了虚拟机的系统层 直接调系统 API 模拟了一个虚拟环境 又想到 WSL1 好像也是那么做的 查了下发布时间 Docker13 年 WSL16 年... 所以 WSL1 根本不像知乎上吹的是什么黑魔法 不过是抄袭了 Docker 的想法 最后还因为坑太多填不上 放弃了 转用更传统的办法
1
codehz 2020-03-30 12:30:19 +08:00 via Android 13
??? docker 用的是 linux 内核的命名空间,cgroup,seccomp 等机制,和虚拟化没半毛钱关系,docker 事实上完全没有任何虚拟化的过程
wsl 1 是直接造了一个新的内核兼容层实现,也和虚拟化没半毛钱关系( wsl2 才是虚拟化) 你想说的那种模拟,叫做用户态虚拟化,qemu 有实现,但是这依赖于同系统,也就是实现 linux x86 跑 linux arm 的二进制,做不到让 windows 跑 linux 或者反过来 |
2
jonah 2020-03-30 12:45:57 +08:00 via Android 1
实际上 docker 才不是什么黑魔法,用 shell 脚本就能实现类似 docker 的功能
|
3
maggch 2020-03-30 12:47:48 +08:00 2
半瓶子咣当
|
4
also24 2020-03-30 12:51:46 +08:00 via Android 5
Docker 可以粗略的理解为:
以前你在 Linux 上运行 Linux 虚拟机,突然发现,诶两边都是 Linux 诶,那用同一份 Linux 内核不就好了嘛? 于是 Docker 出现了。 有一天楼主想做 WSL1 了: 诶那我按照 Docker 的思路来做吧,首先我们共享一下 Linux 内核…… 诶?我 TM 是 Windows 啊哪儿来的 Linux 内核? |
5
binbinyouliiii 2020-03-30 12:55:21 +08:00 via Android 3
楼主要是不知道的话虚心请教也没人会说你,但是半瓶子水出来吹牛就是你的不对了
|
6
Yvette 2020-03-30 13:08:03 +08:00
看标题我就猜到楼主是个学生
|
7
CallMeReznov 2020-03-30 13:17:24 +08:00
我如果是楼主,早被人打死了!
|
8
westoy 2020-03-30 13:21:46 +08:00 1
LXC 在角落里画圈圈
|
9
Lonely 2020-03-30 13:24:32 +08:00 via iPhone
你是来搞笑的吗?就因为 wsl 发布时间晚所以就是抄 docker 的?
|
10
reus 2020-03-30 14:53:29 +08:00 1
……学艺不精就不要随便喷
docker 基于 linux 的 namespace 机制,也就是隔离进程、网络、cgroup 等等,使用同样技术的用户态程序早就有了,lxc 。 wsl 是实现了 linux 的系统调用,等于自己写了半个 linux 内核,类似的还有 linux 的 wine,只不过是兼容 windows 。 |
11
murmur 2020-03-30 15:04:02 +08:00
楼上的都喷完了,我就不喷了
|
12
Love4Taylor 2020-03-30 15:05:29 +08:00 via Android
还真就什么人都有啊,见识了。
|
13
ipwx 2020-03-30 15:22:31 +08:00 1
楼主看完评论大可以继续喷:
“我觉得 WSL 抄袭了 wine……” |
14
jy02201949 2020-03-30 15:24:13 +08:00
看到那么的人喷,我就放心了
|
15
reus 2020-03-30 15:33:07 +08:00
还有一个类似 wsl 的东西是 google 的 gVisor: https://github.com/google/gvisor
也是实现了部分 linux 的系统调用,当然,是跑在 linux 上的,目的和 wsl 不一样。 |
16
est 2020-03-30 16:50:00 +08:00
上课就专心听讲。不要乱发帖。
|
18
rpish OP @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 多谢指教: ) |
19
ipwx 2020-04-21 09:30:12 +08:00
@rpish Docker 没有模拟另一个系统。Docker 用的是 Linux 内核的环境隔离功能,本身是内核功能的一部分。
如果这还不够,那么想一下:用 WSL1 模拟 Linux,WSL1 要把所有 Linux 的 API 通过 Windows 系统重写一遍,还要想办法欺骗所有 Linux 程序,让它们以为它们运行在 Linux 下,难度可想而知。但是 Docker 使用 Linux 的内核隔离,没有重写任何 API,就是调用了内核原有的功能,包装了一下而已。 |