提交一个mysql docker镜像不会embedded一个新的数据库

如果我在一个MySQL容器中创build一个数据库并将其作为一个新的图像提交。 新的图像不包含数据库。 这是情况

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 

如果我从这个图像创build一个容器,数据库不在这里

 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”的历史logging,但是服务器不保留数据库michael。

我不明白为什么。

按预期工作。 容器内的数据通常不是最佳实践。 MySQL基础映像将数据目录指定为不会保留的卷 。