使用Docker for Mac时:缓存绑定挂载,是主机还是容器上的延迟?

时间:2018-03-23 13:44:17

标签: docker docker-compose docker-for-mac

The osxfs caching pagedelegated部分内容为:

  

对于使用delegated挂载的目录,容器的文件系统视图是权威的,容器执行的写入可能不会立即反映在主机文件系统上。

部分cached读取:

  

对于使用cached挂载的目录,主机的文件系统视图是权威的;容器执行的写操作立即对主机可见,但在主机上执行的写操作在容器中可见之前可能会有延迟。

我不清楚这一点。如果使用cached主机的系统视图是权威的,那么这不应该意味着如果主机上的某些内容发生变化,它会立即反映在容器中吗?为什么延迟权威"侧?

2 个答案:

答案 0 :(得分:3)

:cached模式下,文件属性和文件内容的读取由具有较长生命周期的容器缓存。当主机上的内容发生变化时,会立即将缓存失效消息发送到容器以使缓存条目到期 - 这很快但不是即时的。文档正在讨论这种延迟。

答案 1 :(得分:0)

权威数据源始终提供规范的新数据。只要存在数据损坏,我们就会信任权威数据源。

DNS协议就是一个很好的例子:

  1. 您的计算机缓存域名解析。
  2. 中间名称服务器缓存此域名从其权威名称服务器检索到的DNS记录。
  3. 名称服务器A保留此域名的规范记录。
  4. 这就是我们将Nameserver A称为此域的权威名称服务器的原因。更新名称服务器A中的记录时,更改可能需要数小时才能显示给您的计算机。

    回到你的问题。名称cached已经告诉我们它提供了什么。它为我们提供了相对更好的读取性能,但却带来了数据不一致的成本。