Windows Docker Mysql 容器挂载外部本地磁盘的解决方案

阅读时长 4 分钟读完

在使用 Docker 运行 MySQL 数据库时,有时需要将数据存储到本地磁盘上以便数据持久化。本文将介绍如何在 Windows 下使用 Docker 运行 MySQL 容器,并将容器挂载到本地磁盘上,同时还能保证容器仍然可以访问挂载的磁盘。

安装 Docker

首先,需要在 Windows 上安装 Docker。可以从 Docker 官网下载 Docker Desktop for Windows,安装后启动即可。

运行 MySQL 容器

接着,需要运行 MySQL 容器。可以使用以下命令:

其中,-e MYSQL_ROOT_PASSWORD 参数用于设置 MySQL 的 root 用户密码,-p 3306:3306 参数用于将容器的 3306 端口映射到主机的 3306 端口,以便从主机访问 MySQL 数据库。

-v 参数用于将主机上的目录挂载到容器中,后面的 /mnt/c/Users/yourusername/docker/mysql/data 是主机上的目录,/var/lib/mysql 是容器中的目录。

在运行上述命令之前,需要先在主机上创建目录 C:\Users\yourusername\docker\mysql\data。其中 yourusername 是当前登录 Windows 的用户名。

解决容器无法访问挂载的磁盘

在 Windows 下挂载的磁盘是不支持 Linux 文件权限的,因此容器无法访问挂载的目录。

一种解决方案是在主机上创建一个用户组,然后将该用户组添加到容器中的 MySQL 用户组中。具体步骤如下:

创建一个用户组

在 Windows 命令行中执行以下命令,创建一个名为 docker 的用户组:

添加用户组

在容器中添加用户组 docker,执行以下命令:

其中,HOST_GID 应该设置为挂载磁盘所属用户组的 GID。

添加用户

在容器中添加用户,执行以下命令:

其中,HOST_UID 应该设置为挂载磁盘所属用户的 UID。

修改权限

在容器中将挂载目录的所有者修改为用户 mysql,执行以下命令:

重启容器

最后,需要重启 MySQL 容器,才能使上述修改生效。执行以下命令:

示例代码

上述步骤可以封装成一个脚本。以下是一个示例脚本:

-- -------------------- ---- -------
---------

- ------ ------ ----- ---- --- -------- ---- -- --------------
--- ---------- ------ ----
------------- -- -------
------ --------------------

- --- --------- --- ---- --- ------ ----- ------ ---------
------ --- -
  ------ ----- -
  -- --------- -
  -- ------------------------------------------------------ -
  -- ----------------------------- -
  -- ------------ -
  -- -- --------- -- ----------- ------ -- -
         ------- -- -- ---- -- ------------- -- ------ ----- -- -
         ----- -- ----------- -------------- -- -
         ---- ------ -------------

其中 yourusername 是当前登录 Windows 的用户名。

总结

本文介绍了在 Windows 下使用 Docker 运行 MySQL 容器,并将容器挂载到本地磁盘上的解决方案。通过创建一个用户组,并将该用户组添加到容器中的 MySQL 用户组中,同时修改文件权限,可以解决容器无法访问挂载磁盘的问题。同时,提供了一个示例脚本,方便使用者参考。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64cb77695ad90b6d0420b6cc

纠错
反馈