docker修改挂载目录

当linux安装好docker-ce后应该及时考虑容器挂载目录的问题,避免后续出现磁盘不足问题导致异常
情况一:刚安装docker

修改容器配置文件,增加参数,默认路径为 /var/lib/docker/

[root@ceshi-128 ~]# vi /etc/docker/daemon.json
{
  "data-root":"/data/docker" #根据自己所选的路径修改即可
}

重启服务

[root@ceshi-128 ~]# systemctl restart docker
  • 如果增加上述配置后出现服务起不来,看下自己docker的版本是不是过低导致,可以使用"graph":"/data/docker"试试
情况二:已经有镜像再运行
  • 此时比较麻烦的是,不论是docker服务本身还是镜像层,我们一般都会使用持久化方式去运行,所以不能只是修改配置就能处理的

新增数据盘路径为 /liujiangxu

  1. 删除目前所运行的镜像,避免后续镜像启动失败
[root@ceshi-128 ~]# docker rm -f $(docker ps -aq)
  1. 停止服务
[root@ceshi-128 ~]# systemctl stop docker
  1. 修改配置文件,增加挂载路径
[root@ceshi-128 ~]# vi /etc/docker/daemon.json
{
  "data-root":"/liujiangxu/docker" 
}
  1. 移动默认挂载目录(默认路径下存储之前docker持久化的文件,比如镜像、网络、卷等自身信息)不做这部后面你会发现服务起来是空的,什么也没有
[root@ceshi-128 ~]# cp -rp /var/lib/docker /liujiangxu/docker #避坑,这块必须保留原属性复制或者直接mv
  1. 重启docker服务
[root@ceshi-128 ~]# systemctl restart docker
  1. 查看服务docker目录信息,成功替换
[root@ceshi-128 grafana]# docker info | grep Dir
 Docker Root Dir: /liujiangxu/docker
  1. 将原镜像文件移动至新盘目录中(也可以不用做7.8步骤,因为我原分区空间不够都需要移动)
[root@ceshi-128 ~]# cp -rp /data/grafana/ /liujiangxu/
  1. 修改原镜像文件持久化挂载路径"volumes",
version: "3.5"
....
    volumes:
    - /liujiangxu/grafana/data:/var/lib/grafana 
  1. 查看镜像启动挂载文件,已经发生改变
[root@ceshi-128 grafana]# docker-compose -f grafana.yaml up -d 

[root@ceshi-128 grafana]# docker inspect grafana | grep liujiangxu
        "ResolvConfPath": "/liujiangxu/docker/containers/b6830e8302e4863985e297824091b2020cb984c8f3373596ac895529ed6466d0/resolv.conf",
        "HostnamePath": "/liujiangxu/docker/containers/b6830e8302e4863985e297824091b2020cb984c8f3373596ac895529ed6466d0/hostname",
        "HostsPath": "/liujiangxu/docker/containers/b6830e8302e4863985e297824091b2020cb984c8f3373596ac895529ed6466d0/hosts",
修改目录后权限错误补充
  • 当我们在以上属于第二种情况时,应当按照cp -rp或者直接mv的方式去移动整体目录,这样会避免权限带来的困扰。
  • 比如我修改后出现zabbix服务起不来,什么改动都没做,后台大量报错Permission denied,而且报错的路径都不属于手动挂载的,后来发现我在复制/var/lib/docker目录时没有保留属性导致出现了次问题
zbx-server        | ** Updating '/etc/zabbix/zabbix_server.conf' parameter "ListenIP": ''...sed: couldn't open temporary file /etc/zabbix/sedVYDwlU: Permission denied
zbx-server        | removed
zbx-server        | ** Updating '/etc/zabbix/zabbix_server.conf' parameter "ListenPort": ''...sed: couldn't open temporary file /etc/zabbix/sedjgsXxU: Permission denied
zbx-server        | removed
zbx-server        | ** Updating '/etc/zabbix/zabbix_server.conf' parameter "SourceIP": ''...sed: couldn't open temporary file /etc/zabbix/sedkUZJyU: Permission denied
zbx-server        | removed
zbx-server        | ** Updating '/etc/zabbix/zabbix_server.conf' parameter "LogType": 'console'...sed: couldn't open temporary file /etc/zabbix/sedEQ9xXT: Permission denied
zbx-server        | added
zbx-server        | ** Updating '/etc/zabbix/zabbix_server.conf' parameter "LogFile": ''...sed: couldn't open temporary file /etc/zabbix/sedFKp97T: Permission denied
zbx-server        | removed
解决方式
  • 我这边比较简单粗暴使用docker system prune -a 命令(清理本地所有未使用的镜像及持久化文件)。而上述报错的主要原因就是overlay2目录下还存在之前zabbix镜像所遗留的持久文件导致权限问题。清理之后再重新下载镜像就没问题了
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值