Mac 下 Docker 运行较慢的原因分析及个人见解

在 mac 使用 docker 的时候,我总感觉程序在 docker 下运行速度很慢,接下来我一一分析我遇到的问题,希望大家能进行合理的讨论和建议。

问题:#

  1. valet 下打开 laravel 首页耗时 60ms,docker 下打开耗时 12s

  2. 在解决了第一个问题的前提下,docker 下仍旧耗时 2s

解决方法:#

  1. 第一个问题排查过程中发现是 DNS Lookup 时间太长导致的,搜索后发现,是因为使用了.local 域名的原因,chrome 下就会存在解析时间过长,不过 safari 下没有这个问题。解决方法就是别在本地使用 .local 的虚拟域名。

    解决前:#

    image-20200312182610066

    解决后:#

    image-20200312182730690

    我们再来看一下 valet 下是什么情况:#

    image-20200312182845593

    我们发现 TTFB 竟然只有 21ms,而 docker 下竟然有 1.8 秒。这差距巨大的,要知道,1 s = 1000ms。

  2. 在解决了第一个问题后我们发现了第二个问题,那么我找到官网说的 docker 的缓存 :cached。我使用后,说实话,貌似毛用都没有。哈哈。

    不过天无绝人之路,我突然想到,既然这个问题是因为 docker 挂载出的问题,那么我能不能在本地使用 valet 来解析网站,然后其他的 es、kafka 等组件我放到 docker 中。

    尝试后看看结果:

    image-20200312183358476

    大家可以看到我这里使用的 valet 在本地解析网站后,连接的 docker 中的 es。ttfb 一下子就下来了。而我们再来看看 docker 下解析:

    image-20200312183518663

    其实差距还是蛮大的。

    我们再来对比数字,1780ms/60ms = 30 , 所以我们已经提速了 30 倍。

讨论:#

大家有没有好的提速的建议?

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 20
Summer

Docker 在 Mac 下用的是虚拟机,会有文件挂载的问题,很难逾越。

用 valet 解析的方式还是很具创新哈

5年前 评论
FixBug (楼主) 5年前

官方说了的,mac 的文件系统和 docker 的文件系统有区别,所以慢

如果你内存够大,16g 或者更大,你可以使用在 homestead 里面使用 docker 或者开个 linux 虚拟机使用 docker

5年前 评论
FixBug (楼主) 5年前
siyecao

说实话 我上周末也使用了官方的 cached 还有 docker-sync 骚操作 依然没效果 太难受了 Mac 大法

5年前 评论
FixBug (楼主) 5年前

.local 这个问题我也遇到过,哈哈

5年前 评论
FixBug (楼主) 5年前
ouer1994 (作者) 5年前

今天也遇到了这个问题,全网搜遍了,貌似没有解决办法哦~

4年前 评论
FixBug (楼主) 4年前

valet 解析啥意思?? 就是一个 DNSmasq 配置吧? 我这里有 https://github.com/839891627/dnpm

4年前 评论
FixBug (楼主) 4年前

请问怎么用 valet 来解析?

4年前 评论

我是直接访问 localhost:8088 去访问 docker 内的服务,TTFB 需要 3s+

4年前 评论
ydnnsct 4年前
konakona (作者) 4年前
konakona (作者) 4年前

请问怎么用 valet 来解析?

3年前 评论
konakona 3年前