Docker 绑定挂载目录与命名卷性能比较

Shi*_*r G 2 containers docker

以下 docker 命名卷与绑定安装卷之间是否有任何性能差异?如果是,我们在谈论多少数字?

  1. Docker 卷示例:
docker run -v mysql:/var/lib/mysql mysql:tag
Run Code Online (Sandbox Code Playgroud)
  1. Docker 绑定挂载示例:
docker run -v /path/to/mysql-data:/var/lib/mysql mysql:tag
Run Code Online (Sandbox Code Playgroud)

这些容器主要用于诸如 elasticsearch、mysql 和 mongodb 之类的数据库。我应该更喜欢哪一个?

Dav*_*aze 8

在几个平台(MacOS带有 WSL 2 的 Windows)上,已知绑定安装特别慢。

除此之外,您不应该看到命名卷、容器文件系统、映像中的文件(无论层数如何)或绑定安装(特别是在本机 Linux 上)之间的明显性能差异。

一个好的通用规则可能是对配置文件和日志文件使用绑定挂载,其中 I/O 相对较少,但您作为人类需要直接访问这些文件;用于数据库存储和其他 I/O 相对频繁但作为人类您无法直接读取文件的内容的命名卷;以及应用程序代码的图像本身。