Docker更改默认存储路径后mysql容器启动不起来报mysqld:Can‘t create/write to file ‘/tmp/ib8cWqRv‘ (Errcode :13 - Permis)

1.docker 默认存储路径为根目录,存储空间爆了,导致各个docker服务都启动不起来,所以要做docker更改默认存储路径,使用的是宝塔的linux面板环境。

 2.根据度娘资料进行存储路径迁移。

      a.容器存储路径都位于/var/lib/docker中 

      b.停止docker     systemctl stop docker

      c.创建要迁移的目录路径 ,本人迁移到了/www/lib/docker目录下的。使用命令复制文件到目标文件夹里面:

          cp -R /var/lib/docker/* /www/lib/docker/

        d.复制完毕后,重要的需要把docker配置文件里面默认存储路径指向为我们迁移的目录路径:

        配置 /etc/systemd/system/docker.service.d/devicemapper.conf
        查看/etc/systemd/system/docker.service.d目录及devicemapper.conf是否存在。如果不存在,就新建。

        [Service]
        ExecStart=
        ExecStart=/usr/bin/dockerd  --graph=/www/lib/docker/

         e.配置完毕后,可以删除原先docker的默认存储路径 /var/lib/docker 整个文件夹了。

6.重启docker

systemctl daemon-reload
systemctl restart docker
systemctl enable docker

7.使用命令docker info查看是否已修改默认存储路径

8.问题出现:

        重启docker后,docker-compose启动的程序和redis等build的容器都能启动成功,就是mysql 相关的容器不能启动成功一直在restart。查看日志说什么没有权限在tmp文件中写入,真是奇怪了。

9.根据度娘,尝试的几种方法都不能成功启动。

       第一种:

         使用   sudo chown 999:999 /tmp         无效

         使用   sudo chown  777 $PWD/temp   无效

       第二种:

          修改docker容器内的mysql 配置文件mysqld.cnf,说是增加指向mysql 临时文件路径,但是还是无效。

        将docker 的mysql 配置文件拷贝到宿主机路径,

        docker cp container-mysql:/etc/mysql/mysql.conf.d/mysqld.cnf /www/wwwroot/mysql

        下载下来修改

        在[mysqld] 下增加 tmpdir      = /www/wwwroot/api.hente.cn/mysql/temp

        然后再复制覆盖docker mysql 的然后重启mysql容器

        docker cp /www/wwwroot/mysql/mysqld.cnf container-mysql:/etc/mysql/mysql.conf.d/mysqld.cnf

         第三种:直接执行修改宿主机的 chmod 777 /tmp 命令,无效。

10. 解决思路:

        根据日志文件提示,确实 /tmp 无权限写入,但是它不应该是宿主机上的 /tmp文件,更加不应该是某个mysql容器中的 /tmp 文件,而是整个docker 相对路径中的 /tmp 文件。

        所以问题是出在了我们迁移的docker存储路径中,查看一翻确实,迁移中的docker目录下有个 /tmp 的目录,但是单单给 /tmp 目录添加 777权限还是无效。

        应在迁移目录的最顶目录中授权777权限。

 

 11.结语:

        重启mysql容器即可重新启动成功,但是其他容器启动和redis启动都能写入这个/tmp文件夹里面,就单单mysql容器不行。对比未迁移前docker的存储目录的权限都是755 权限的也并未出现这种问题。容器启动起来了,具体问题原因可能会被发现,先这样吧。

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值