我用的是mysql数据库
因为我在docker容器里已经安装好一个mysql服务器,我需要的是/var/lib/mysql下的数据。
1.运行容器,并挂载本地一个空目录到容器中的非/var/lib/mysql目录下,docker容器中在被挂载目录下修改会同步到本地目录中(举例说你挂载/home/xxx/目录到docker容器中的/root/tmp/目录下,当你进入docker容器并修改/root/tmp目录下的内容时会被同步本地/home/xxx/目录下,相当于就是在修改本地的/home/xxx/目录!)
2.进入容器并将容器中的/var/lib/mysql/目录下的内容复制到/root/tmp/目录下(命令:cp -R /var/lib/mysql/ /root/tmp/),并递归修改目标文件(/root/tmp/mysql/)的属主/组为mysql!,这点很重要,不然以后挂载到容器中会导致mysql服务起不来;
3.退出容器,然后去查看/home/xxx/会发现多出来一个mysql目录中,查看mysql下的文件属性,你会看到owner会变成一个反正我不知道的用户,我的是lxd,不知道是不是固定的。保持这个样子不要手贱修改它;
4.之后就可以docker run的时候挂载本地的/home/xxx/mysql/到容器中的/var/lib/mysql/下了,docker容器是暂存的,但是只要修改了数据库中的东西(即修改了/var/lib/mysql/下的东西)就会同步到本地的/home/xxx/mysql/目录下,成功实现分离。这样也更安全。
添加1个docker容器运行的小TIPS,进入容器后,如果exit会直接停掉容器,里面的服务也会停掉,可以使用CTRL+P然后CTRL+Q来挂起容器保证服务正常。