Docker 安裝 MySQL:為什么不配置掛載目錄會自動配置一個掛載卷?

Docker 安裝 MySQL:為什么不配置掛載目錄會自動配置一個掛載卷?

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/lib/mysql 目錄。這意味著:

  • 如果未指定其他掛載卷,/var/lib/mysql 目錄將被自動掛載到宿主機的 /var/lib/docker/volumes/mysql/_data 目錄。
  • 如果您指定另一個掛載卷,例如 -v /my/custom/path:/var/lib/mysql,則自動掛載的卷將被覆蓋,并且 /var/lib/mysql 目錄將被掛載到 /my/custom/path 目錄。

因此,不配置掛載目錄會自動配置一個掛載卷,這是因為 dockerfile 中定義了默認掛載卷。如果希望使用不同的掛載卷,則必須在 docker run 命令中顯式指定它。

? 版權聲明
THE END
喜歡就支持一下吧
點贊10 分享