docker部署mysql的问题:带有表及数据的mysql容器,打包成镜像迁移之后,数据丢失

Altruiste 2019-07-25 10:38:49
问题现象:
建立表并存有数据的mysql container通过docker commit的方式生成的镜像,然后利用镜像创建容器,能正常连接,但里面没有之前的数据
问题来源及场景:
docker入坑菜鸟一枚,有个项目用的是mysql,想带着里面的数据进行迁移,我使用了mysql的docker镜像启了后台服务,在这个容器配置好用户信息之后,并且也建了个表,存放了数据,然后我想对这个容器打包成镜像,利用镜像重新创建的container,docker run -i -p 3306:3306 -t image,连接之后发现之前建的数据库丢失了
请问这是怎么回事
...全文
1051 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Altruiste 2019-07-26
  • 打赏
  • 举报
回复
进容器看了下发现数据的确是在/var/lib/mysql这个目录下,这样的话有没有啥优雅的方式将挂载卷的数据一起打包进去的,我只能想到再挂载/var/lib/mysql到linux本地,然后再进行打包塞到镜像里,感觉不是很优雅了
micro wen 2019-07-26
  • 打赏
  • 举报
回复 1
mysql数据库中的数据默认是存放在/var/lib/mysql目录下的,而mysql容器通常是将容器内的/var/lib/mysql作为volume挂载,当你使用commit命令把容器打包成镜像时,commit操作并不会包含容器内挂载的volume中的数据变化,所以会发现数据都不在了。

我这两天也是在这个坑里踩了好久

1,163

社区成员

发帖
与我相关
我的任务
社区描述
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux 机器上,也可以实现虚拟化。
社区管理员
  • Docker
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧