• docker修改挂载目录


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

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

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

    重启服务

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

    新增数据盘路径为 /liujiangxu

    1. 删除目前所运行的镜像,避免后续镜像启动失败
    [root@ceshi-128 ~]# docker rm -f $(docker ps -aq)
    
    • 1
    1. 停止服务
    [root@ceshi-128 ~]# systemctl stop docker
    
    • 1
    1. 修改配置文件,增加挂载路径
    [root@ceshi-128 ~]# vi /etc/docker/daemon.json
    {
      "data-root":"/liujiangxu/docker" 
    }
    
    • 1
    • 2
    • 3
    • 4
    1. 移动默认挂载目录(默认路径下存储之前docker持久化的文件,比如镜像、网络、卷等自身信息)不做这部后面你会发现服务起来是空的,什么也没有
    [root@ceshi-128 ~]# cp -rp /var/lib/docker /liujiangxu/docker #避坑,这块必须保留原属性复制或者直接mv
    
    • 1
    1. 重启docker服务
    [root@ceshi-128 ~]# systemctl restart docker
    
    • 1
    1. 查看服务docker目录信息,成功替换
    [root@ceshi-128 grafana]# docker info | grep Dir
     Docker Root Dir: /liujiangxu/docker
    
    • 1
    • 2
    1. 将原镜像文件移动至新盘目录中(也可以不用做7.8步骤,因为我原分区空间不够都需要移动)
    [root@ceshi-128 ~]# cp -rp /data/grafana/ /liujiangxu/
    
    • 1
    1. 修改原镜像文件持久化挂载路径"volumes",
    version: "3.5"
    ....
        volumes:
        - /liujiangxu/grafana/data:/var/lib/grafana 
    
    • 1
    • 2
    • 3
    • 4
    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",
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    修改目录后权限错误补充
    • 当我们在以上属于第二种情况时,应当按照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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    解决方式
    • 我这边比较简单粗暴使用docker system prune -a 命令(清理本地所有未使用的镜像及持久化文件)。而上述报错的主要原因就是overlay2目录下还存在之前zabbix镜像所遗留的持久文件导致权限问题。清理之后再重新下载镜像就没问题了
  • 相关阅读:
    Flutter(学前必看)基础
    EXCEL表格倒三角标志下拉选择的设置、取消限制方法
    极简cfs完全公平调度算法
    【自用存档】bs4爬虫代码
    线性归一化是什么,用python实现数据的线性归一化
    javaWeb环境搭建LInux
    ChatGPT消息发不出去了?我找到解决方案了
    性能测试之Fiddler 如何批量修改请求信息
    pringboot+高考志愿填报信息管理系统 毕业设计-附源码251922S
    OS>>信号的产生,信号的保存,信号的捕捉
  • 原文地址:https://blog.csdn.net/weixin_43757402/article/details/126626439