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

  • 2020 年 3 月 12 日
  • 筆記

在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 倍。

讨论:

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