解决Docker使用WSL2项目运行慢的问题
其实在WSL1下速度还可以接受,但在WSL2下简直忍无可忍,加载一个页面或请求一个接口,本来毫秒响应的在WSL2下需要2~4s。
一. WSL1 VS WSL2
先来看看微软官方的说明
官方已经告诉了我们关键问题和解决方案,WSL2的跨文件系统的性能堪忧,不要将项目挂载到Windows系统中,
而是挂载到WSL文件系统中。
二. 将项目挂载到WSL2下(WSL2安装参考)
我原来的项目目录挂载如图
- 进入WSL2子系统(我使用的发行版是Ubuntu)
- 将项目目录复制到Ubuntu /var下
- 修改挂载路径
volumes: - /var/www/:/var/www/
三. 在WSL2中启动容器
在WSL2中从/mnt进入到对应的docker-compose.yml目录启动容器即可。
现在再运行项目,又回到了丝滑的感觉
本作品采用《CC 协议》,转载必须注明作者和本文链接
wsl2可以直接使用docker了吗???
然而IDE打开项目又卡成狗
wsl1 能用docker么
WSL2 前些日子还在家里机器上折腾过,死活没装上 docker ,就很奇了怪 :unamused:
取消勾选wsl也可以,每次使用wsl 就会有一个Vmmem进程启动,巨占内存
Hi,想请教楼主一个问题哈,今天重新看一个多月没看的项目,但很多命令执行起来都报错
使用的是 WSL2,Ubuntu 20,宝塔
Segmentation fault
;不知道楼主有碰到过没?@crackfan hyper-v运行laravel快吗
@linxianfu 起码比wsl2快的多
运行代码在wsl里,但开发代码还是得在win里吧。。这样用win的编辑器打开项目,理论上也很慢吧
项目直接放wsl里的话,宿主机(window)打开又卡成狗了... 感觉还是直接虚拟机吧 折腾
wsl 目前还不支持 systemctl
把项目拷贝到WSL2中 , 再用phpstorm 打开WSL2项目 , 的确重启如丝般顺滑 . 但是phpstorm的File watcher插件报错了 , 报错信息如下 [CentOS7] File watcher failed repeatedly and has been disabled
为什么我报这个错
看来不只我一个人有这问题啊…………那我就放心了。
我看网上有建议把代码放在\wsl$\docker-desktop\mnt\host\wsl\docker-desktop,这个目录在wsl里或ubuntu里如何访问啊
docker run --name php8 -d -p 8087:9000 -it --net php --ip 172.172.0.7 -v \wsl.localhost\Ubuntu-20.04\docker\php\www:/var/www/html --privileged -u root 8c 确实快很多,直接挂载到ubantu里面。
我找到一个更好的办法,就是弄2份代码
一份放在 window 磁盘,提供给 phpstorm 编辑器访问 一份放在 wsl 虚拟机里,提供给 docker 服务访问
然后在 wsl 里装 ftp 服务, phpstorm 里通过 Tools => deployment 配置 ftp 同步代码
既然WSL能通过/mnt目录直接访问到windows下的目录,那么直接用/mnt下的php代码目录跟容器的www目录做映射不就好了。比如我windows的php代码在
D:\dnmp\www
,php容器代码目录那么映射就是/mnt/d/dnmp/www/:/var/www/
,这样就不存在代码同步问题,因为D:\dnmp\www
与/mnt/d/dnmp/www/
数据本来就是同步的