首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MariaDB数据是否在码头设置更改后丢失?

MariaDB数据是否在码头设置更改后丢失?
EN

Stack Overflow用户
提问于 2016-08-13 18:12:50
回答 2查看 2K关注 0票数 2

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

今天,我想做一个备份,所以我用Kitematic来改变端口,这样我就可以从机器上访问它来进行自动备份。在改变了基特列的端口之后,它似乎启动了一个新的MariaDB容器(也就是说,我的所有数据似乎都被删除了)。

这是预期的行为吗?而且,更重要的是,是否有任何方法来恢复似乎丢失的数据,或它是否已被完全删除?

另外,如果实际删除了数据,那么更改设置(例如公开端口)而不丢失所有更改的首选方法是什么?docker commit

备注:

  • 运行用于OS的docker 1.12.0测试版
  • docker -ps a将数据库状态显示为“上行X分钟”,而原始状态已经启动了几天

提前感谢!

更新:

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

  1. 提交更改(例如docker commit <containerid> <name/tag>)
  2. 将容器离线
  3. 更新设置,如公开端口或其他任何设置
  4. 使用提交的更改运行映像

...taken,来自这个答案

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-08-13 19:03:28

是的,这是预期的行为。如果您想要您的数据是持久的,您应该从主机(通过--volume选项docker run)或从另一个容器装入卷,并将数据库文件存储在此卷中。

代码语言:javascript
复制
docker run --volume /path/on/your/host/machine:/var/lib/mysql mariadb

丢失更改实际上是容器的核心特性,因此不能省略。通过这种方式,您可以确保在每个docker run之间都会得到新鲜的环境,而不会发生任何更改。如果您希望您的更改是永久的,您应该在您的图像的Dockerfile,而不是容器本身。

欲了解更多信息,请访问官方文件:https://docs.docker.com/engine/tutorials/dockervolumes/

票数 2
EN

Stack Overflow用户

发布于 2016-08-13 19:06:48

看起来您没有将容器卷安装到特定的路径。您可以阅读有关卷的内容并将数据存储到容器这里中。

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

代码语言:javascript
复制
$ 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是主机上的目录

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38935619

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档