docker在OSX慢卷

我试图在OSX上使用Dockertesting版,主要是为了Symfony的开发,但是安装的版本是非常慢的。 即使是一个香草Symfony项目,我也能获得6s的页面加载时间。 那是无法忍受的! 有没有人find解决这个问题? 试图摆脱stream浪,但我找不到任何合理的方式来与docker工作。

好的,用户Spiil提供了一个解决scheme,但是我想详细说明从我经历了12个小时试图弄清楚的确切步骤,但是一旦您知道了它的超级简单并修复了所有缓慢的问题!

这里的关键是了解这个解决scheme创buildNFS(networking文件系统)驱动器作为从Docker容器到Mac的通信方式,而不是标准的OSX文件系统,目前非常缓慢,无论是由于错误或工作方式*

完全按照这些步骤。

1.)在你的主目录中克隆这个回购( https://github.com/IFSight/d4m-nfs )。 要做到这一点,打开terminal并键入cd ~

然后inputgit clone https://github.com/IFSight/d4m-nfs

或者,你也可以在一个单行的git clone https://github.com/IFSight/d4m-nfs ~/d4m-nfs做到这一点git clone https://github.com/IFSight/d4m-nfs ~/d4m-nfs

2.)接下来进入d4m-nfs文件夹并在/ etc文件夹中创build一个新文件并标题为d4m-nfs-mounts.txt

3.)将以下代码行添加到此。

 /Users/yourusername:/Users/yourusername:0:0 

上面所做的是允许您仍然使用docker-compose的相关文件夹,并允许所有端口连接,因此0:0。

编辑不要把/卷这里!

4.)转到您的docker首选项并执行以下操作

在这里输入图像说明

确保只有/ tmp正在显示,别无其他。 我的意思是没有其他的东西,如果还有其他的东西,那么它就不能工作,因为它会和脚本稍后为你创build的NFS系统产生冲突。 重新启动docker工人和docker工人 – 也可以编写任何容器。

5.)最后导航到我们在步骤1中创build的d4m-nfs目录,然后键入以下命令/bin/bash d4m-nfs.sh

编辑上面input命令的正确方法是从github(if-kenn)指出的另外一个用户./d4m-nfs.sh它使用Shebang来运行它。

如果正确完成,应该没有错误,这应该工作。 请注意不要运行,因为sh d4m-nfs.sh这将创build错误,你将不得不删除你的出口文件重新开始。 事实上,任何时候你做任何改变,你将不得不清除你的出口文件。

这是我的样子。

在这里输入图像说明

编辑::重要 – 删除/私人和卷! 这应该只是用户/用户名吧!

如果你看到除此之外的任何东西,你没有运行bash。 如果出现任何错误,您可以在Mac中像这样快速find导出文件,只需将其清除即可重新开始。

只要select去文件夹

在这里输入图像说明

然后键入/etc/exports

这是一个很好的快捷方式,可以快速find并在您喜欢的文本编辑器中清除它。

还要确保没有容器正在运行,否则你会得到……..死循环。 如果这个死亡循环继续,请确保您升级docker,然后重新启动您的计算机。 是的重新启动…它似乎是唯一的方法让它在我的朋友的计算机上工作。 参考这个( https://github.com/IFSight/d4m-nfs/issues/3

注意….循环。 我最近find另一个解决scheme 确保你没有以root身份login,并确保你把git仓库放入你的users〜文件夹而不是root〜文件夹。 换句话说,它应该在Users / username中。

另外,请确保/ tmp文件夹具有完整的写入权限,因为脚本需要在这里写入,否则这也不起作用。 chmod 777 -R /tmp

6.)如果你在运行脚本时做得对,它看起来就像这样。

在这里输入图像说明

然后像往常一样,在symfony项目文件夹(或任何你使用docker的项目)中简单地运行你的docker-compose -d ,一切都应该工作…除了没有更多的慢下来!

您需要在重新启动计算机或泊坞窗的任何时候运行此操作。

另外请注意,如果您显示安装错误,您可能没有将您的项目存储在用户/用户名目录中。 请记住,这是我们安装它的地方。 如果您的项目不在那里,则需要相应地修改d4m-nfs-mounts.txt文件。

其他信息:

在这里输入图像说明

显然现在有一个解决方法:

https://forums.docker.com/t/file-access-in-mounted-volumes-extremely-slow-cpu-bound/8076/48 https://forums.docker.com/t/how-to-speed -up共享文件夹/一十五分之九千三百二十二

Docker Team的解释和各种解决方法有很长的篇幅 。

目前, 这个问题正在GitHub上进行跟踪 。

虽然一些解决方法可能比其他解决scheme更好,但是恐怕现在理想的select是切换到Linux。

对于现在阅读的人来说,也许最好等待Docker来解决这个问题。 拉取请求已被接受,以提高性能( https://github.com/docker/docker/pull/31047 )。 这将在2017年4月份发布,应该是一个很大的改进。

我已经尝试了一些Docker for Mac的解决方法,但是他们都有一些非常大的缺点,主要是可用性。 OSXFS的替代品的一个很好的来源可以在: https : //github.com/EugenMayer/docker-sync/wiki/Alternatives-to-docker-sync 。 Eugen Mayer的信贷设置了这一点。

编辑 :第一个改进是在边缘版本中实现的。 https://github.com/docker/for-mac/issues/77有关于此的更多信息。

我花了很多时间寻找可行的解决scheme。 我发现了。 d4m-nfs允许您通过nfs使用docker卷。 在我的情况下,它提高了16倍的性能! (1.8秒vs约30秒)

另外d4m-nfs有一个相当复杂的手册,所以这里有另一个详细的例子: https : //github.com/laradock/laradock/issues/353#issuecomment-262897619

我只是把这里留给其他谷歌。

正常的卷应该是快的。 但是如果你不想改变磁盘的格式,你不能改变任何东西来使它们更快。

但也许瓶颈是CPU或RAM。 你可以用命令docker stats来检查。 这些默认设置为2个核心和2 GB RAM。 您可以在Docker for Mac GUI中进行更改。

我有完全一样的东西。 对于我来说,使用docker-bg-sync( 参见GitHub )在速度和CPU使用率方面取得了巨大的进步。

不如安装卷,因为你必须为每个同步启动一个新的容器,但它做的工作。

在最新的docker 17.06.0-ce-mac18上装载:caching似乎运行相当不错。