Docker MySQL 物理卷映射

在使用 Docker 运行 MySQL 时,我们通常希望数据库的数据能够持久化保存,这样即使容器被删除或重启,数据也不会丢失。Docker 提供了一种叫做物理卷映射(Volume Mapping)的功能,可以将宿主机上的目录与容器内的目录进行映射,实现数据的持久化。

本文将介绍如何使用 Docker MySQL 物理卷映射的方法,并提供相关的代码示例。

什么是 Docker 物理卷映射

Docker 物理卷映射是一种将宿主机上的目录与容器内的目录进行映射的方法。通过物理卷映射,我们可以将宿主机上的数据目录与容器内的数据目录进行关联,从而实现数据的持久化。

在 Docker 中,我们可以使用 -v 参数来设置物理卷映射。该参数的格式为 [宿主机目录]:[容器目录],其中 [宿主机目录] 是宿主机上的目录路径,[容器目录] 是容器内的目录路径。

使用 Docker 物理卷映射运行 MySQL

下面我们将以一个简单的示例来演示如何使用 Docker 物理卷映射来运行 MySQL。

首先,我们需要在宿主机上创建一个用于存放 MySQL 数据的目录。假设我们在宿主机上创建了一个名为 /data/mysql 的目录。

接下来,我们可以使用以下命令来在 Docker 中运行 MySQL,并将宿主机上的 /data/mysql 目录与容器内的 /var/lib/mysql 目录进行映射:

docker run -d -p 3306:3306 -v /data/mysql:/var/lib/mysql --name mysql mysql:latest

在上述命令中,我们使用了 -d 参数来将容器以后台方式运行,并使用了 -p 参数将容器的 3306 端口映射到宿主机的 3306 端口。最后,我们使用了 -v 参数将宿主机上的 /data/mysql 目录与容器内的 /var/lib/mysql 目录进行了映射。

验证数据持久化

为了验证数据的持久化,我们可以通过以下步骤进行测试:

  1. 进入 MySQL 容器:
docker exec -it mysql bash
  1. 登录 MySQL 服务器:
mysql -u root -p
  1. 创建一个新的数据库:
CREATE DATABASE test;
  1. 退出 MySQL 客户端和容器:
exit
exit

现在,我们可以停止并删除 MySQL 容器:

docker stop mysql
docker rm mysql

接下来,我们重新运行 MySQL 容器:

docker run -d -p 3306:3306 -v /data/mysql:/var/lib/mysql --name mysql mysql:latest

然后,我们再次进入 MySQL 容器,并登录 MySQL 服务器:

docker exec -it mysql bash
mysql -u root -p

最后,我们尝试访问之前创建的数据库:

USE test;

如果我们能够顺利访问到之前创建的数据库,那么说明数据持久化成功。

总结

通过 Docker MySQL 物理卷映射,我们可以轻松实现 MySQL 数据的持久化。只需将宿主机上的目录与容器内的目录进行映射,即可保证数据不会因为容器的删除或重启而丢失。

在本文中,我们介绍了 Docker 物理卷映射的概念,并提供了一个使用示例。通过这个示例,我们可以更好地理解和掌握 Docker MySQL 物理卷映射的用法。

希望本文对你有所帮助,谢谢阅读!


代码示例:

docker run -d -p 3306:3306 -v /data/mysql:/var/lib/mysql --name mysql mysql:latest