提交mysql docker镜像不会嵌入新数据库

时间:2015-05-13 20:55:21

标签: docker

如果我在mysql容器中创建数据库并将其作为新映像提交。新映像不会使数据库持久化。这是方案

docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql
docker exec -it some-mysql bash
root@e756b3aa719b:/# mysql -uroot -pmy-secret-pw 

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)

mysql> create database michael;

mysql> show databases;         
+--------------------+
| Database           |
+--------------------+
| information_schema |
| michael            |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.00 sec)

mysql> exit
Bye
root@e756b3aa719b:/# exit
exit

然后我将此容器作为图像提交

docker commit 486932c6d7e7 bdd/myproj:1.0

如果我从这张图片创建一个容器,那么数据库不在这里

docker run --name newbdd -e  MYSQL_ROOT_PASSWORD=my-secret-pw -d mybdd/myproj:1.0
docker exec -it newbdd bash
root@004f86506ebf:/# mysql -uroot -pmy-secret-pw
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.01 sec)

真正奇怪的是,mysql客户端保留了命令“create database michael”的历史记录,但是服务器没有保留数据库michael。

我不明白为什么。

1 个答案:

答案 0 :(得分:3)

按预期工作。容器内的数据通常不是最佳实践。 mysql基本映像将数据目录指定为volume,但不会持久存在。