如果我在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。
我不明白为什么。