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似乎运行相当不错。