Docker for Mac 当使用 :cached 绑定挂载时,延迟是在主机上还是在容器上?

With Docker for Mac when using :cached bind mounts, are the delays on the host or the container?

The osxfs caching page,第 delegated 节内容为:

For directories mounted with delegated the container’s view of the file system is authoritative, and writes performed by containers may not be immediately reflected on the host file system.

cached 部分内容如下:

For directories mounted with cached, the host’s view of the file system is authoritative; writes performed by containers are immediately visible to the host, but there may be a delay before writes performed on the host are visible within containers.

我不清楚。如果,使用 cached,主机对系统的看法是权威的,那不就意味着如果主机上发生了什么变化,它会立即反映到容器中吗?为什么延迟在"authoritative"这边?

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

权威数据源始终提供规范的最新数据。每当出现数据损坏时,我们都信任权威数据源。

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

  1. 您的电脑缓存了一个域名解析。
  2. 中间名称服务器缓存从其权威名称服务器检索到的该域名的 DNS 记录。
  3. 名称服务器 A 保留此域名的规范记录。

这就是为什么我们称Nameserver A为该域的权威域名服务器。更新名称服务器 A 中的记录时,您的计算机可能需要数小时才能看到更改。

回到你的问题。 cached 这个名字已经告诉我们它提供了什么。它为我们提供了相对更好的读取性能,但代价是数据不一致。