解决PHP项目在Docker(WSL2)中运行缓慢的问题

这篇具有很好参考价值的文章主要介绍了解决PHP项目在Docker(WSL2)中运行缓慢的问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

环境

Windows 11
Docker Desktop 4.17.1(开启WSL2)
WSL2(Ubuntu-22.04)

前言

最近在使用Docker容器运行PHP项目的时候,发现特别缓慢。例如一个干净的 ThinkPHP 5.1 框架,访问首页都需要1秒以上,如果再加上数据库查询、复杂的业务逻辑等代码的话,那速度可想而知。

我的开发模式是,在Windows上使用 IDE 开发,代码也是存储在Windows系统上,然后docker通过挂载的方式,将代码目录挂载到容器里去运行。

后面查资料得知,是因为Docker是跑在 WSL2 里的,虽说 WSL2 相比 WSL1 更先进,但在跨系统文件读写性能方面是比 WSL1 差的(参阅:比较 WSL 1 和 WSL 2),因此,跑在 WSL2 里的docker想要跨系统访问Windows系统上的代码文件的话,性能是很差的。

解决方法

第一种方法

让docker不要使用WSL2,改为使用WSL1。方法很简单,在设置里面关闭 WSL2 就可以:
解决PHP项目在Docker(WSL2)中运行缓慢的问题
但正如图中描述所说,Windows Home版本只能使用 WSL2,不支持WSL1,我的正好是Home版本,因此这种方法行不通。

第二种方法

既然问题起因是跨系统文件读写性能差,那么我们不要跨系统读写不就可以了?

所以我不再把代码存储在Windows系统上,改为存储在 WSL2 上。

1)首先要安装一个WSL系统,我选择的是Ubuntu 22.04,在Microsoft Store中搜索Ubuntu安装就可以:
解决PHP项目在Docker(WSL2)中运行缓慢的问题

因为我已经安装好了,所以图片中显示的是“已拥有”。

2)在Docker Desktop中开启WSL集成功能,并重启Docker:
解决PHP项目在Docker(WSL2)中运行缓慢的问题
开启WSL集成功能后,我们就可以在Ubuntu里使用docker命令了。

3)进入Ubuntu shell命令行界面,如下图所示,搜索ubuntu,点击就可以:
解决PHP项目在Docker(WSL2)中运行缓慢的问题

或者在Powershell中执行 wsl -d Ubuntu-22.04命令也可以。

4)进入ubuntu命令行界面后,发现执行docker命令会报错:
解决PHP项目在Docker(WSL2)中运行缓慢的问题
这是因为当前用户没有足够的权限,解决方法是,在前面加上sudo,即sudo docker ps就可以。

但我不想每次都加sudo,太麻烦了。还有另外一种方法,执行sudo usermod -aG docker ${USER}命令将当前用户加入到docker用户组就可以不用加sudo了。

注意:加入到docker用户组后,要关闭当前窗口,重新进入ubuntu命令行才会生效!

5)在ubuntu中选一个路径作为你项目的存储目录,我选的是 /home/workspace 目录,因为我的项目有上传到git仓库,因此我使用 git clone 命令将代码下载到 /home/workspace 目录即可。

6)在ubuntu中启动docker容器,将代码目录挂载到docker容器里去,命令参考:

docker run -d -v /home/workspace:/var/www/html --name {CONTAINER_NAME} {IMAGE_NAME}

/home/workspace是宿主机路径,/var/www/html是容器路径,{CONTAINER_NAME}是容器名字,{IMAGE_NAME}是镜像名字,需自行替换。

7)现在我的代码都存储在ubuntu里了,那在Windows上我还怎么用IDE进行开发?

不用急,在Windows上我们也是可以访问ubuntu里的文件的。

例如下图,在IDE里打开项目的时候,选择\\wsl$\Ubuntu-22.04\,这个文件夹里的就是ubuntu系统里的文件目录,然后选择你代码所在的文件夹打开就可以了:
解决PHP项目在Docker(WSL2)中运行缓慢的问题
8)将代码改为存储在ubuntu里后,再次运行项目,速度已经恢复正常~文章来源地址https://www.toymoban.com/news/detail-447371.html

参阅
  • https://printlove.cn/posts/docker/wsl2/
  • https://stackoverflow.com/questions/63036490/docker-is-extremely-slow-when-running-laravel-on-nginx-container-wsl2

到了这里,关于解决PHP项目在Docker(WSL2)中运行缓慢的问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • windows wsl2 docker+k8s+cuda容器无法启动问题解决

    docker: Error response from daemon: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: error during container init: error running hook #1: error running hook: exit status 1, stdout: , stderr: Auto-detected mode as \\\'legacy\\\' nvidia-container-cli: mount error: file creation failed: /var/lib/docker/overl

    2024年02月13日
    浏览(38)
  • WSL2 及 docker开发环境搭建

    控制面板-程序-程序和功能-启动或关闭Windows功能-勾选红框中选项-确认后重启电脑  下载地址如下, 附件已将下载的安装包作为附件形式上传,可直接下载 https://docs.microsoft.com/en-us/windows/wsl/install-manual 该软件安装需要在使能WSL后重启电脑后方可安装,安装界面如下: C:U

    2024年02月13日
    浏览(35)
  • 解决WSL2的ubuntu20.04中安装docker出现无法连接的问题(Cannot connect to the Docker daemon)

    wsl2的ubuntu20.04系统安装docker可以参考官网教程操作,我个人喜欢参考其中的离线安装方式:Install from a package。只需要按照官网一步步操作即可,跟普通的ubuntu20.04的安装是一样的步骤。 在安装完以后,发现一旦使用docker相关命令会出现下述问题: 说明docker没有正常启动。这

    2024年04月23日
    浏览(40)
  • 基于 Docker Desktop、WSL2 搭建双系统 Docker 环境

    Docker Desktop :可以理解为是 Docker 的桌面版,或者是 Windows 系统上运行的 Docker 服务。 WSL2 :可以理解为是 Windows 上的一个工具,通过 WSL2 可以在 Windows 上运行 Linux 子系统。 通过 Docker Desktop、WSL2 方式搭建的双系统 Docker 环境,可以实现在 Windows 服务器上同时运行 Windows 和 L

    2024年02月13日
    浏览(41)
  • WIN11+WSL2+Docker 深度学习环境部署

    Windows系统开发偶尔会出现一些系统底层的bug导致程序无法运行,开发很难受。 Linux系统开发,娱乐软件少,不尽兴。 双系统切换太麻烦,不能同时使用,难受! 如何结合Windows和Linux,既能畅爽娱乐,又不会被底层BUG影响开发,来试试Windows的子系统WSL2吧!! 本次思路为:在

    2024年02月21日
    浏览(33)
  • 微软wsl2 + ubantu + docker + 部署本地项目

    windows 操作系统版本要达到要求 开启 wsl2 安装实用工具 Windows Terminal 和 Visual Studio Code 安装 Ubuntu 子系统 安装 Docker Desktop 并让 Docker Desktop 基于 wsl2 来运行 基础环境准备可以完全参照《搭建 Laravel Sail 开发环境 - Windows》来进行,我跟教程作者不同的是「六、创建测试项目 」及

    2024年02月16日
    浏览(34)
  • 基于WSL2+Docker+VScode搭建机器学习(深度学习)开发环境

    内容概述 :由于最近配发了新的工作电脑但不想装双系统,因此通过本博文来记录基于Windows子系统WSL+Docker搭建机器学习与深度学习开发环境的流程步骤,同时记录该过程中所遇到的相关问题及解决方案。期待为同行学习者提供参考; 最终效果 :在Windows电脑上,无需安装

    2024年02月04日
    浏览(32)
  • 基于 WSL2、 Docker Desktop搭建Windows和Linux系统 Docker 环境

    目录 介绍 环境 安装教程 开启 WSL2 服务 安装 CentOS 系统 安装 docker Desktop 其他  安装镜像 WSL 命令使用 Docker-Desktop 储存路径更改 WSL2 :可以理解为是 Windows 上的一个工具,通过 WSL2 可以在 Windows 上运行 Linux 子系统。  Docker Desktop :可以理解为是 Docker 的桌面版,或者是 W

    2024年01月20日
    浏览(44)
  • 史上最全从0开始教你玩转wsl2+docker,构建自己的开发环境

    1、安装wsl 需要windows版本大于 搜索启用或关闭windows功能 把图片中红点标注的功能勾选,注意勾选hyper-v就不能使用虚拟机类软件,如vm,安卓模拟器一类,点击确定,重启电脑。 打开任务管理器 确保虚拟化已经启用,部分设备可能需要去bios设置,自行查阅下相关资料 下载

    2024年02月08日
    浏览(37)
  • YII项目在Docker中运行缓慢

    链接阿里数据的 入口直接返回的 网上有说是docker的dns解析慢; 也有说是WSL2 的跨文件系统的性能 最后我经过分析,我的项目是加载了项目框架就慢,原生代码返回就很快,排除了第一种dns解析问题… 采用第二种方式解决docker返回api缓慢的文件 可以参考如下文章 文章一 文章

    2024年02月10日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包