解决Docker使用WSL2项目运行慢的问题

其实在WSL1下速度还可以接受,但在WSL2下简直忍无可忍,加载一个页面或请求一个接口,本来毫秒响应的在WSL2下需要2~4s。

一. WSL1 VS WSL2

先来看看微软官方的说明
解决docker使用WSL2项目运行慢的问题

官方已经告诉了我们关键问题和解决方案,WSL2的跨文件系统的性能堪忧,不要将项目挂载到Windows系统中,
而是挂载到WSL文件系统中。

二. 将项目挂载到WSL2下(WSL2安装参考)

我原来的项目目录挂载如图

解决docker使用WSL2项目运行慢的问题

  • 进入WSL2子系统(我使用的发行版是Ubuntu)
  • 将项目目录复制到Ubuntu /var下
  • 修改挂载路径
    volumes:
        - /var/www/:/var/www/

三. 在WSL2中启动容器

在WSL2中从/mnt进入到对应的docker-compose.yml目录启动容器即可。

解决docker使用WSL2项目运行慢的问题

现在再运行项目,又回到了丝滑的感觉

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 43

wsl2可以直接使用docker了吗???

3年前 评论
xing393939 3年前
sunny123456 (作者) 3年前

然而IDE打开项目又卡成狗

3年前 评论
坐忘 3年前
浮心 1年前
capture (楼主) 3年前
capture (楼主) 3年前

wsl1 能用docker么

3年前 评论
capture (楼主) 3年前

WSL2 前些日子还在家里机器上折腾过,死活没装上 docker ,就很奇了怪 :unamused:

3年前 评论
capture (楼主) 3年前

取消勾选wsl也可以,每次使用wsl 就会有一个Vmmem进程启动,巨占内存

file

3年前 评论
capture (楼主) 3年前
翟宇鑫

Hi,想请教楼主一个问题哈,今天重新看一个多月没看的项目,但很多命令执行起来都报错 Segmentation fault;不知道楼主有碰到过没? file 使用的是 WSL2,Ubuntu 20,宝塔

3年前 评论
capture (楼主) 3年前
  • 将项目目录复制到 Ubuntu /var 下 就这步 开发算了 :sob: 老老实实用hyper-v
3年前 评论
capture (楼主) 3年前
linxianfu

@crackfan hyper-v运行laravel快吗

3年前 评论

@linxianfu 起码比wsl2快的多

3年前 评论
李铭昕

运行代码在wsl里,但开发代码还是得在win里吧。。这样用win的编辑器打开项目,理论上也很慢吧

3年前 评论
capture (楼主) 3年前
李铭昕 (作者) 3年前
capture (楼主) 3年前
李铭昕 (作者) 3年前
李铭昕 (作者) 3年前
capture (楼主) 3年前
浮心 1年前

项目直接放wsl里的话,宿主机(window)打开又卡成狗了... 感觉还是直接虚拟机吧 折腾

2年前 评论
李铭昕 2年前

wsl 目前还不支持 systemctl

2年前 评论

把项目拷贝到WSL2中 , 再用phpstorm 打开WSL2项目 , 的确重启如丝般顺滑 . 但是phpstorm的File watcher插件报错了 , 报错信息如下 [CentOS7] File watcher failed repeatedly and has been disabled

2年前 评论
overfalse 2年前
path /mnt/e/dnmp/data/mysql5 is mounted on /mnt/e but it is not a shared mount. 

为什么我报这个错

2年前 评论
LXK 1年前

看来不只我一个人有这问题啊…………那我就放心了。

2年前 评论

我看网上有建议把代码放在\wsl$\docker-desktop\mnt\host\wsl\docker-desktop,这个目录在wsl里或ubuntu里如何访问啊

1年前 评论
LXK 1年前

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里面。

1年前 评论

我找到一个更好的办法,就是弄2份代码

一份放在 window 磁盘,提供给 phpstorm 编辑器访问 一份放在 wsl 虚拟机里,提供给 docker 服务访问

然后在 wsl 里装 ftp 服务, phpstorm 里通过 Tools => deployment 配置 ftp 同步代码

1年前 评论
晏南风 1年前
浮心 (作者) 1年前
浮心 (作者) 1年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!