Docker迁移根目录导致mysql权限问题

问题描述

  最近由于公司服务器硬盘老是爆满,导致经常要清硬盘空间.最后发现/var/lib/docker目录占了25G,以前分kvm分区的时候,他们分了两个区:根目录"/",和"/home"目录,发现home目录使用几乎为零,于是准备迁移Docker的根目录:

迁移根目录我看的是这个文章:docker的存储目录迁移, 不过迁移的时候我没有使用rsync这个命令,而是使用cp -R;

文件复制过去后,按照教程,重新启动docker服务,可是其中mysql容器跑不起来了,报mysqld: Can’t create/write to file ‘/tmp/ibTCv7Rw’ (Errcode: 13 - Permission denied)

图片

期间按照网上的方法:说docker容器启动是添加–privileged=true,设置/tmp目录的权限,关闭selinux,这些方法都没用!!!!!!

其中设置/tmp文件权限这个方法,我把里面的/tmp文件挂载出来后,设置了权限,报这个的问题是解决了,可是又出现了新的问题,又报Version: ‘5.7.27’ socket: ‘/var/run/mysqld/mysqld.sock’

图片

看来还是得从根源上解决问题啊!

我的解决办法

    我想,既然是权限问题,那肯定是复制文件的时候权限丢失了,于是查了下cp命令保持权限的命令(cp -p):

图片

于是我又重新关闭的docker服务,然后删除了所有复制到home文件的目录,重新用cp -p -R /var/lib/docker /home/docker/lib/来重新复制了文件;

复制后,重启docker服务,启动docker容器,ok,一切正常;用docker info查看,看到已成功转移到/home下.图片