更改Docker设置后MariaDB数据丢失吗?



我已经在Docker中设置了一个基本的MariaDB实例-基本上是从使用Kitematic UI启动容器,更改设置,然后让它运行。

今天,我想做一个备份,所以我使用Kitematic更改端口,这样我就可以从一台机器访问它来进行自动备份。在Kitematic中更改端口后,它似乎已经启动了一个新的MariaDB容器(即我的所有数据似乎都被删除了)。

这是预期的行为吗?更重要的是,有没有办法恢复看似丢失的数据,或者它已经被完全删除了?

另外,如果数据确实被删除了,那么在不丢失所有更改的情况下更改设置(比如公开的端口)的首选方法是什么?docker commit ?

指出:

  • 运行docker 1.12.0 beta for OS X
  • docker -ps a显示数据库状态为"Up for X minutes",而原始数据库已经启动了几天

提前感谢!

更新:

看起来,保留数据(不创建卷或类似的)的推荐过程是:

  1. 提交更改(例如docker commit <containerid> <name/tag>)
  2. 使集装箱脱机
  3. 更新设置,如暴露端口或其他
  4. 运行已提交更改的映像

是的,这是预期的行为。如果您希望您的数据是持久的,您应该从主机(通过--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/

看起来您没有将容器卷挂载到特定路径。您可以在这里阅读卷和存储数据到容器

您需要运行带有卷选项的容器

$ 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为主机目录

相关内容

  • 没有找到相关文章

最新更新