docker 安装 mysql:不配置挂载目录自动配置挂载卷的缘由
在 docker 中安装 mysql 时,如果不配置挂载目录,mysql 容器将自动配置一个名为 /var/lib/mysql 的挂载卷。这个行为令人疑惑,特别是当您尝试在指定其他目录作为数据存储时。
原因探究
要理解为什么会出现这种情况,我们需要深入 dockerfile 文件。dockerfile 是用于构建 docker 镜像的文本文件。对于 mysql 镜像,您可以找到官方 dockerfile 位于以下位置:https://github.com/docker-library/mysql/blob/main/5.7/dockerfile。
在 dockerfile 中,有一行如下:
VOLUME /var/lib/mysql
这一行告诉 docker 在容器内部挂载 /var/li
b/mysql 目录。这意味着:
因此,不配置挂载目录会自动配置一个挂载卷,这是因为 dockerfile 中定义了默认挂载卷。如果希望使用不同的挂载卷,则必须在 docker run 命令中显式指定它。