docker mysql容器重启 数据还在吗

原创
ithorizon 8个月前 (09-01) 阅读数 82 #Docker

docker mysql容器重启后,数据是否还在?

在使用docker的过程中,很多开发者会好奇一个问题:如果对运行中的mysql容器进行重启操作,那么其中的数据是否还会保留?本文将针对这一问题进行解答。

一、原理分析

在使用docker运行mysql容器时,通常会涉及到两种数据存储做法:数据卷(Volume)和挂载(Mount)。这两种做法在容器重启后,数据是否保留的情况是不同的。

二、数据卷(Volume)

数据卷是docker中用于持久化数据的对象。当你创建一个mysql容器时,可以指定一个数据卷用于存储数据库文件。这种情况下,即使容器被重启,数据卷中的数据依然会保留。

三、挂载(Mount)

挂载是指将宿主机的文件或目录映射到容器内的文件或目录。如果使用挂载的做法存储mysql数据,只要挂载的宿主机目录在容器重启后仍然存在且数据未被删除,那么数据同样会保留。

四、实践验证

下面我们通过一个易懂的例子来验证容器重启后数据是否还在。

1. 创建并运行一个mysql容器

docker run --name mysql_test \

-p 3306:3306 \

-e MYSQL_ROOT_PASSWORD=root \

-v /mydata/mysql/data:/var/lib/mysql \

-d mysql:5.7

上述命令中,我们使用了一个数据卷(/mydata/mysql/data:/var/lib/mysql)用于存储mysql的数据。

2. 进入容器,创建数据库和表

docker exec -it mysql_test mysql -uroot -p

CREATE DATABASE test;

USE test;

CREATE TABLE user (id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50));

INSERT INTO user (name) VALUES ('Alice');

3. 重启mysql容器

docker restart mysql_test

4. 验证数据是否还在

docker exec -it mysql_test mysql -uroot -p

USE test;

SELECT * FROM user;

执行上述命令后,如果查询因此如下:

+----+-------+

| id | name |

+----+-------+

| 1 | Alice |

+----+-------+

说明容器重启后,数据仍然保留。

五、总结

通过上述分析与实践验证,我们可以得出结论:在使用docker运行mysql容器时,只要使用了数据卷(Volume)或挂载(Mount)的做法存储数据,即使容器被重启,数据仍然会保留。


本文由IT视界版权所有,禁止未经同意的情况下转发

文章标签: Docker


热门