我正在尝试在OSX上使用docker beta,主要用于Symfony开发,但挂载的卷速度令人难以置信。即使对于一个香草的Symfony项目,我也可以获得6秒的页面加载时间。那是难以忍受的!有没有人找到解决这个问题的方法?试图远离流浪汉,但我找不到任何合理的方式与码头工作。
答案 0 :(得分:17)
好的,用户Spiil提供了一个解决方案,但是我想详细说明自从我经历了12个小时试图找出它之后要采取的具体步骤,但是一旦你知道它的超级简单并修复了所有减速问题!
这里的关键是要理解这个解决方案创建NFS(网络文件系统)驱动器作为从Docker容器到Mac而不是标准OSX文件系统的通信方式,目前由于错误或方式非常慢它有效*
完全按照以下步骤操作。
1。)在您的主目录中克隆此回购(https://github.com/IFSight/d4m-nfs)。为此,请打开终端并输入cd ~
然后输入git clone https://github.com/IFSight/d4m-nfs
或者您也可以在单行git clone https://github.com/IFSight/d4m-nfs ~/d4m-nfs
2.。)接下来进入d4m-nfs文件夹并在/ etc文件夹中创建一个新文件并标题为d4m-nfs-mounts.txt
3。)将以下代码行添加到此。
/Users/yourusername:/Users/yourusername:0:0
以上功能允许您仍然使用具有docker-compose的相关文件夹,并允许所有端口连接到它,因此0:0。
修改强> 不要把/卷放在这里!!
4.。)转到您的泊坞窗偏好设置并执行以下操作
确保只显示/ tmp且没有显示。我的意思是没有别的东西,如果还有别的东西它将无法工作,因为它会与以后脚本将为你制作的NFS系统产生冲突。重新启动docker和docker-compose down any container。
5.)最后导航到我们在步骤1中创建的d4m-nfs目录,然后输入以下命令/bin/bash d4m-nfs.sh
编辑上面输入命令的正确方法就是这个来自github的另一个用户(if-kenn)指出,./d4m-nfs.sh
使用Shebang来运行它应该运行什么shell
如果正确完成,应该没有错误,这应该有效。请注意,请勿运行sh d4m-nfs.sh这将产生错误,您必须删除导出文件才能重新开始。实际上,只要您进行任何更改,就必须清除导出文件。
这就是我的样子。
编辑::重要 - 删除/ private和卷!这应该只是用户/用户名!
如果您看到除此之外的任何内容,则表示您没有使用bash运行。如果您出现任何错误,可以快速访问Mac中的导出文件,并将其清除以重新开始。
只需选择转到文件夹
即可然后输入/etc/exports
这是一个很好的快捷方式,可以快速访问并在您喜欢的文本编辑器中清除它。
还要确保没有容器正在运行,否则您将获得........死循环。如果此死循环继续,请确保升级docker然后重新启动计算机。是的重新启动......它似乎是让它在我的朋友计算机上工作的唯一方法。请参阅此(https://github.com/IFSight/d4m-nfs/issues/3)
注意....循环。我最近发现了另一个解决方确保您没有以root身份登录,并确保将git repo拉入users~文件夹而不是root~文件夹。换句话说,它应该是用户/用户名。
此外,请确保/ tmp文件夹具有完全写入权限,因为脚本需要在此处写入,否则这也不起作用。 chmod 777 -R /tmp
6。)如果你在运行脚本时做得对,它将会是这样的。
然后像往常一样在你的symfony项目文件夹中运行你的 docker-compose up -d (或者你正在使用docker的任何项目),一切都应该工作......除了没有更多的减速!
您需要在重新启动计算机或泊坞窗时随时运行此功能。
另请注意,如果出现安装错误,您可能没有将项目存储在Users / username目录中。请记住,这是我们安装它的地方。如果您的项目不在那里,则需要相应地修改d4m-nfs-mounts.txt文件。
其他信息:
答案 1 :(得分:11)
显然目前有一种解决方法:
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-shared-folders/9322/15
答案 2 :(得分:6)
对于现在阅读此内容的人来说,等待Docker解决此问题可能会更好。已接受拉取请求以提高性能(https://github.com/docker/docker/pull/31047)。 这将在2017年4月的某个地方发布,应该是一个很大的改进。
我已经为Docker for Mac尝试了一些解决方法,但是它们都有一些非常大的缺点,主要是在可用性方面。可以在https://github.com/EugenMayer/docker-sync/wiki/Alternatives-to-docker-sync找到OSXFS替代品的良好来源。为Eugen Mayer设立的积分。
修改强>: 在边缘版本中实现了第一个改进。 https://github.com/docker/for-mac/issues/77有更多相关信息。
答案 3 :(得分:4)
There's a long thread with explanation from Docker Team以及各种解决方法。
目前,the issue is being tracked on GitHub。
虽然一些解决方法可能比其他解决方案更好,但我担心现在的理想选择是切换到Linux。
答案 4 :(得分:3)
我花了很多时间在寻找可行的解决方案。我找到了。 d4m-nfs 允许您通过nfs使用docker卷。 在我的情况下,它提高了16次性能! (1.8秒vs~30秒)
另外d4m-nfs有一个非常复杂的手册,所以这里是另一个带有详细示例的链接:https://github.com/laradock/laradock/issues/353#issuecomment-262897619
我将此留给其他googlers。
答案 5 :(得分:2)
Normaly卷应该很快。 但如果您不想更改磁盘格式,则无法更改任何内容以使其更快。
但也许瓶颈是CPU或RAM。
您可以使用命令docker stats
进行检查。默认情况下,它们设置为2个内核和2 GB RAM。您可以在Docker for Mac GUI中更改此设置。
答案 6 :(得分:2)
在最新的docker 17.06.0-ce-mac18卷中安装:缓存似乎运行得相当不错。
答案 7 :(得分:1)
我有完全相同的事情。对我来说,使用docker-bg-sync(see on GitHub)可以大大提高速度和CPU使用率。
不像安装卷一样好,因为你必须为每个同步启动一个新容器,但它能完成这项工作。
答案 8 :(得分:0)
我发现在Parallels下创建CoreOS VM,然后使用CoreOS内部的Docker远远快于Docker for Mac(目前运行版本17.12.0-ce-mac49(21995))。
我正在使用CMAKE / Ninja / GCC进行Linux代码构建,它的速度几乎是Docker for Mac完全相同的两倍。
在我的情况下,我有大量的库源代码是容器的一部分(例如Boost,OpenSSL),以及我保存在Mac上的大量C ++代码。
这似乎是最近的发展。 Docker / Mac变得比我记得的一两个月前慢得多。也许它只是我...
答案 9 :(得分:0)
我们通过使用syncthing同步mac文件系统的本地和docker来克服了这个问题。我们构建了一个遵循此方法的开源工具,以防它有所帮助: https://github.com/okteto/cnd