在 Docker Compose 中使用 delegated
与不使用 delegated
对 volumes
的性能和行为有一些区别:
- 默认(不写
delegated
):- 默认情况下,Docker 会尽量保持容器和主机之间的数据同步。也就是说,主机和容器之间的数据更新是同步进行的,以确保文件系统的一致性。虽然这种方式确保了文件的同步性,但在高 I/O 场景下会导致性能开销较大,尤其是当主机和容器之间频繁交换文件时。
delegated
选项:- 使用
delegated
选项时,Docker 优化了卷的性能,容器对文件系统的写入操作会被优先处理,而同步回主机的操作则可能会被延迟。这意味着主机上的文件更新可能会稍微滞后于容器中的更新,但在容器内的文件读写性能会更好,特别是在高并发写入的情况下。
- 使用
总结来说,使用 delegated
可以提升容器内高 I/O 场景下的性能,但会稍微牺牲主机与容器之间的文件同步及时性。如果你的应用需要频繁读写文件并且性能是一个重要因素,可以考虑使用 delegated
。否则,默认设置通常已经足够。