我在OSX上有一个开发Docker容器,带有boot2docker。
我连接到容器并通过...将我项目的源目录挂载到docker容器中。
docker run -it -p 8080:8080 -v /local_src:/container_src foo/bar /bin/bash
当在container_src内部时,某些操作非常慢。例如,git status
大约需要8秒钟才能完成。
但是,如果我使用克隆到容器中的源
,一切正常关于为什么会这样做的任何想法?
我想知道安装卷和使用boot2docker是否会产生一些开销。
答案 0 :(得分:0)
(我不是这个领域的专家 - 只是得出一些结论)
Git实际上是在收集小文件。当运行git status时,它需要访问.git文件夹中的文件(在我的一个寄存器上的~150个文件)并在repo中的每个文件上运行lstat()
以确保它们不被修改(更多信息{{3} })。因此,docker中的git必须请求有关每个文件的信息(需要转移到vm)。如果每个请求的开销都很小(比如100毫秒),并且你在git文件夹和git中有8000个文件 - 这会导致进程花费大约8秒。