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

问题重现:

q: 建立表并存有数据的mysql container通过docker commit的方式生成的镜像,然后利用镜像创建容器,能正常连接,但里面没有之前的数据

问题解释:

mysql数据库中的数据默认是存放在/var/lib/mysql目录下的,而mysql容器通常是将容器内的/var/lib/mysql作为volume挂载,当你使用commit命令把容器打包成镜像时,commit操作并不会包含容器内挂载的volume中的数据变化,所以会发现数据都不在了。

问题解决:

mysql镜像的数据默认都在/var/lib/mysql目录下,我们修改默认的数据库的数据位置就行,不要放在/var/lib/mysql下面

在根目录下创建work目录

mkdir /work

然后复制/var/lib/mysql下的数据到/work下

cp -r /var/lib/mysql /work

修改数据库配置文件

vim /etc/mysql.conf.d/mysqld.cnf

修改 [mysqld]

下的datadir目录

将数据修改为刚才创建的目录

datadir = /work/mysql

重启容器,然后导入数据,然后将容器打包成镜像,然后再启动镜像,发现镜像中的数据有我们之前导入的数据。

 

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值