1
cheng6563 2021-03-08 11:46:52 +08:00
wsl2 就是用的 hyper-v 。
直接现有虚拟机里部署就行了,免得浪费内存。 |
2
cheng6563 2021-03-08 11:47:36 +08:00
而且 wsl2 的端口转发还需要一堆操作,难搞。
|
3
ScepterZ 2021-03-08 11:51:28 +08:00
还有一种方案是这个虚拟机不用 docker 直接开 redis 吧,不太懂虚拟机的网卡会不会瓶颈,感觉 cpu 内存什么的应该都还好
|
4
LeeReamond OP @cheng6563 hyperv 用的是 wsl2,说反了吧,网络桥接部分问题倒不是很大,我主要想知道这种虚拟机套 docker 的方式会不会增加一层虚拟化开销,底层不是很懂
|
5
LeeReamond OP @ScepterZ 确实但是我觉得最好隔离一下,虽然不知道有什么用,隔离了总是好的,所以不考虑直接开的方案
|
6
also24 2021-03-08 11:56:40 +08:00
> 有两种部署 redis 的方案:
> 一种是再开一台 hyperv 虚拟机,部署 redis, > 另一种是在现有的 linux 虚拟机里安装 docker,开一个 redis 容器。 我寻思着你这两个方案,和 WSL2 也没啥关系啊? 首先背诵 100 遍:Docker 不是虚拟机 其次,假如两台虚拟机性能上没有差异的话,你这两个方案的性能应该是非常接近的。 不过,如果宿主机内存不大,那方案 2 可以给唯一的一台虚拟机分配更多的可分配内存,有利于更灵活的使用。 同理,方案 1 的好处就是隔离性更强,两台虚拟机之间(一般情况下)不会出现抢占资源的情况。 |
7
miyuki 2021-03-08 11:57:34 +08:00 via iPhone
docker 是容器,不是虚拟机……你理解成进程就可以了
|
8
Osk 2021-03-08 11:58:58 +08:00 via Android
docker 不算虚拟化吧。。。
hyper-v - linux/wsl2 - docker - 程序 hyper-v - linux - 程序 不套 docker 性能肯定更好一点。 至于 wsl2,,,还是别用在生产环境吧。 |
9
cheng6563 2021-03-08 12:00:38 +08:00 via Android
@LeeReamond wsl2 的网络问题大的很,我都因为他的网络问题放弃使用了。回到 wsl1+vmware 模式了。不要用 wsl2 发生产服务
|
10
lostberryzz 2021-03-08 12:04:01 +08:00
docker 部署吧,比较方便点,还可以 portainer web ui 管理容器
|
11
LeeReamond OP @Osk 但是这个外面还有个 windows 系统,不同 hyperv 之间资源抢占是否有开销,毕竟 docker 那个模式可以在同一个 linux 内由 linux 分配资源
|
12
LeeReamond OP @cheng6563 大佬能否细说一下 wsl2 的网络问题,我们现在是上生产环境的,服务运行时间大概半年,没遇到过什么问题,可能因为我们服务比较简单。它的网络有什么潜在的坑吗?
|
13
NilChan 2021-03-08 12:13:06 +08:00 via Android
应该 Docker for Windows 更稳一点吧。
|
14
Osk 2021-03-08 12:31:36 +08:00 via Android
|
15
aMR 2021-03-08 13:02:34 +08:00
Docker for Windows + WSL2 后端不香么
https://docs.docker.com/docker-for-windows/wsl/ |
16
czwstc 2021-03-08 13:07:52 +08:00 via iPhone
@LeeReamond WSL2 就是基于 hyperv 技术的虚拟化。
https://docs.microsoft.com/en-us/windows/wsl/wsl2-faq 我记得外部访问 WSL2 例如 ssh 经常端口自动关了。 不过我个人觉得,生产环境哪有上 WSL 的? 至于 hyperV 跑 linux 和跑一个在 linux 里面的 docker,性能基本忽略不计,看运维的成本就好了。 成本最大的不是虚拟机性能,而是人去运维的成本。 |
17
locoz 2021-03-08 13:14:38 +08:00 via Android
这两个东西貌似都是跑在 hyper-v 上,理论上来讲都差不多。
|
18
also24 2021-03-08 13:16:40 +08:00
看了各位的回复,更懵逼了,楼主这两个方案和 WSL2 到底有个啥关联啊?
|
19
totoro625 2021-03-08 15:24:00 +08:00
用过 wsl2+docker,觉得很难用,强烈不推荐
不太清楚 wsl2+docker 的运行原理的可以尝试一下在自己的 Windows 上安装一个体验一下 你的两种方案拆分来看就是: 1 、开启 hyper-v 虚拟机,在里面安装 Debian 等系统,再运行 Redis 。(或者安装 docker+Redis ) 2 、开启 wsl2,wsl2 自动开启 hyper-v 虚拟机,再安装 docker-for-windows,docker-for-windows.exe 自动开启两个 hyper-v 虚拟机( 1 、docker ; 2 、docker-data ),此时你可以在 powershell/cmd 运行 Linux/docker 命令,但是由于三个 hyper-v 虚拟机都是没有管理 GUI 界面的,你会相当的痛苦,尤其是网络管理这一块,要用 powershell 管理,远不如自己开一个 hyper-v 来的舒服 综合考虑人力成本,建议直接开一个 hyper-v 来跑熟悉的 Linux 而不是跑一个不熟悉的 wsl2 单纯追求性能,必须是 wsl2 高,因为可以跑爆宿主机的内存 /CPU/硬盘,相当于直接运行在宿主机,能随意修改宿主机文件;而 hyper-v 的 Linux 是隔了一层保护外壳的 但是你真的不要考虑维护难度么,想好好用上 wsl2 至少要会两种系统,大家都是当做玩具用的,等你研究透了估计能给微软提 bug |
20
also24 2021-03-08 23:47:25 +08:00
@totoro625 #19
楼主的方案 2,不是说在 hyper-v 里的已有的 Linux 虚拟机里安装 docker 么?怎么关联到 WSL2 的? > 该服务是基于 linux 部署的,目前通过 hyperv 虚拟机运行在 windows 系统当中 ...... > 另一种是在现有的 linux 虚拟机里安装 docker,开一个 redis 容器。 |
21
ch2 2021-03-10 20:17:11 +08:00
wsl2 并不适合作为 dedicaded server 使用
|