美文网首页
docker占用磁盘问题

docker占用磁盘问题

作者: 卫泽洪_70a7 | 来源:发表于2021-07-12 10:15 被阅读0次

    1、容器在运行一段时间的时候会突然无法写入数据,报错

    docker no space left on device
    

    2、查看docker 容器日志占用空间

    docker logs -f container_name
    

    出现了噼里啪啦一大堆

    3、解决方法

    3.1、找出Docker容器日志,编写脚本docker_log_size.sh

    #!/bin/sh 
    echo "======== docker containers logs file size ========"  
    
    logs=$(find /var/lib/docker/containers/ -name *-json.log)  
    
    for log in $logs  
            do  
                 ls -lh $log   
            done
    
    # chmod +x docker_log_size.sh
    
    # ./docker_log_size.sh
    

    3.2、清理Docker容器日志(治标),脚本:clean_docker_log.sh

    #!/bin/sh 
    echo "======== start clean docker containers logs ========"  
    
    logs=$(find /var/lib/docker/containers/ -name *-json.log)  
    
    for log in $logs  
            do  
                    echo "clean logs : $log"  
                    cat /dev/null > $log  
            done  
    
    echo "======== end clean docker containers logs ========"
    
    # chmod +x clean_docker_log.sh
    
    # ./clean_docker_log.sh
    

    但是,这样清理之后,随着时间的推移,容器日志会像杂草一样,卷土重来。
    3.2、设置Docker容器日志大小(治本)
    需要限制容器服务的日志大小上限,通过配置容器docker-compose的max-size选项来实现、

    nginx: 
      image: nginx:1.12.1 
      restart: always 
      logging: 
        driver: "json-file"
        options: 
          max-size: "5g"
    

    说明:这是我从网上抄的解决方案,这个文件在哪里我还没不知道,等有空了系统学习一下docker
    3.3 全局设置
    新建/etc/docker/daemon.json,若有就不用新建了

    # vim /etc/docker/daemon.json
    
    {
      "registry-mirrors": ["http://f613ce8f.m.daocloud.io"],
      "log-driver":"json-file",
      "log-opts": {"max-size":"500m", "max-file":"3"}
    }
    

    max-size=500m,意味着一个容器日志大小上限是500M,

    max-file=3,意味着一个容器有三个日志,分别是id+.json、id+1.json、id+2.json

    注:设置后只对新添加的容器有效。

    重启docker守护进程

    systemctl daemon-reload
    
    systemctl restart docker
    

    相关文章

      网友评论

          本文标题:docker占用磁盘问题

          本文链接:https://www.haomeiwen.com/subject/prlsdltx.html