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 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 20
Summer

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

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

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

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

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

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

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

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

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

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

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

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

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

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

请问怎么用valet来解析?

3年前 评论

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

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

请问怎么用 valet 来解析?

2年前 评论
konakona 2年前

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