我已经设置了一个在Docker中运行的基本MariaDB实例--基本上是使用Kitematic启动容器,更改设置,然后让它运行。
今天,我想做一个备份,所以我用Kitematic来改变端口,这样我就可以从机器上访问它来进行自动备份。在改变了基特列的端口之后,它似乎启动了一个新的MariaDB容器(也就是说,我的所有数据似乎都被删除了)。
这是预期的行为吗?而且,更重要的是,是否有任何方法来恢复似乎丢失的数据,或它是否已被完全删除?
另外,如果实际删除了数据,那么更改设置(例如公开端口)而不丢失所有更改的首选方法是什么?docker commit
备注:
docker -ps a将数据库状态显示为“上行X分钟”,而原始状态已经启动了几天提前感谢!
更新:
看起来,保留数据(不创建卷或类似内容)的推荐过程是:
docker commit <containerid> <name/tag>)...taken,来自这个答案。
发布于 2016-08-13 19:03:28
是的,这是预期的行为。如果您想要您的数据是持久的,您应该从主机(通过--volume选项docker run)或从另一个容器装入卷,并将数据库文件存储在此卷中。
docker run --volume /path/on/your/host/machine:/var/lib/mysql mariadb丢失更改实际上是容器的核心特性,因此不能省略。通过这种方式,您可以确保在每个docker run之间都会得到新鲜的环境,而不会发生任何更改。如果您希望您的更改是永久的,您应该在您的图像的Dockerfile,而不是容器本身。
欲了解更多信息,请访问官方文件:https://docs.docker.com/engine/tutorials/dockervolumes/。
发布于 2016-08-13 19:06:48
看起来您没有将容器卷安装到特定的路径。您可以阅读有关卷的内容并将数据存储到容器这里中。
您需要运行具有卷选项的容器。
$ docker run --name some-mariadb -v /my/own/datadir:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mariadb:tag其中/my/own/datadir是主机上的目录
https://stackoverflow.com/questions/38935619
复制相似问题