Docker 容器中 MySQL 数据无法保存的解决方案

阅读时长 4 分钟读完

背景

Docker 提供了一个轻量级的容器化解决方案,能够帮助我们快速构建、发布和运行应用程序。在前端开发中,我们经常使用 Docker 容器来搭建本地开发环境以及测试环境。但是在使用 Docker 启动 MySQL 时,有时会出现问题:我们在容器中创建的数据库和表没有被保存下来。

这是由于容器的存储机制导致的。Docker 容器提供了一个文件系统来保存容器内的数据,但是该文件系统是暂时性的,当容器重新启动时,之前保存的数据就会丢失。

下面我们将介绍两种解决方案,帮助你在 Docker 容器中永久保存 MySQL 数据,避免数据丢失。

解决方案一:使用 Docker 数据卷

Docker 数据卷是一个可在容器间共享或重用的文件或目录。它可以解决容器中数据存储的问题,使数据持久化。在 MySQL 容器中,我们可以使用数据卷挂载容器内的数据目录,将数据存储到宿主机上,从而实现数据永久化。

步骤一:创建数据卷

使用以下命令创建一个数据卷:

步骤二:使用数据卷启动 MySQL 容器

使用以下命令启动 MySQL 容器,并把数据卷挂载到容器中:

步骤三:测试 MySQL 数据是否能够永久保存

在容器中创建数据库和表,然后停止并删除容器。再次启动容器,并检查之前创建的数据库和表是否还存在。如果你能看到之前创建的数据,那么数据持久化工作成功。

解决方案二:自定义 MySQL 镜像

使用自定义的 MySQL 镜像能够更加灵活地管理 MySQL 数据库。我们可以在自定义镜像中使用 Dockerfile 指令将数据存储到镜像中,实现数据永久保存。

步骤一:创建 Dockerfile

首先,我们需要在本地创建一个 Dockerfile 文件。Dockerfile 文件中包含了一系列指令,用于定义构建镜像的过程。

在 Dockerfile 文件中,我们可以指定 MySQL 配置文件、创建数据库和表等操作。而且,由于我们将数据存储在镜像中,所以这些操作只需要在构建镜像的过程中执行一次即可。

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

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

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

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

步骤二:构建自定义 MySQL 镜像

使用以下命令构建自定义 MySQL 镜像:

步骤三:启动自定义 MySQL 容器

使用以下命令启动容器:

步骤四:测试 MySQL 数据是否能够永久保存

在容器中创建数据库和表,然后停止并删除容器。再次启动容器,并检查之前创建的数据库和表是否还存在。如果你能看到之前创建的数据,那么数据持久化工作成功。

总结

在 Docker 容器中永久保存 MySQL 数据的两种解决方案各有优劣。使用数据卷更加简单方便,可以在容器重启时自动挂载数据卷,而自定义 MySQL 镜像更加灵活,可以快速应对不同的需求。无论你选择哪种方案,都可以有效避免数据丢失问题,提高前端开发效率。

以上就是 Docker 容器中 MySQL 数据无法保存的解决方案。希望对大家有所帮助。下面附上示例代码和配置文件:

参考文献:

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

纠错
反馈