2

我在 OSX 上有一个带有 boot2docker 的开发 Docker 容器。

我连接到容器并通过...将项目的源目录安装在 docker 容器中

docker run -it -p 8080:8080 -v /local_src:/container_src foo/bar /bin/bash

在 container_src 内部时,某些操作非常慢。例如,git status大约需要 8 秒才能完成。

但是,如果我使用克隆到容器中的源,一切正常

关于为什么会这样的任何想法?

我想知道安装卷和使用 boot2docker 的组合是否会产生一些开销。

4

1 回答 1

0

(我不是这个领域的专家 - 只是做出一些结论)

Git 实际上适用于收集小文件。运行 git status 时,它需要访问 .git 文件夹中的文件(在我的一个存储库中,它大约有 150 个文件)并lstat()在存储库中的每个文件上运行以确保它们不被修改(更多信息在这里)。因此 docker 内的 git 必须请求有关每个文件的信息(需要传输到 vm)。如果每个请求的开销很小(例如 100 毫秒),并且您在 git 文件夹和 git 中有 8000 个文件 - 这将导致处理大约需要 8 秒。

于 2014-10-24T20:10:46.953 回答