• 解决docker容器日志导致主机磁盘空间满了的情况


    日志文件在   /var/lib/docker/containers/<docker_container_id>/   目录下


    查看日志大小

    vim /opt/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 /opt/docker_log_size.sh

    /opt/docker_log_size.sh


    删除日志

    通过上面的脚本找到占用空间大的日志,复制出日志路径
    清空日志
    cat /dev/null > <docker_container_id>-json.log


    清空所有日志的脚本

    vim /opt/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 /opt/clean_docker_log.sh

    /opt/clean_docker_log.sh


    上述方法,日志文件迟早又会涨回来。
    下面从根本上解决问题。


    设置Docker容器日志大小

    设置一个容器服务的日志大小上限

    以nginx为例

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

    重启nginx容器之后,其日志文件的大小就被限制在5GB


    全局设置

    新建/etc/docker/daemon.json,若有就不用新建了。添加log-dirver和log-opts参数,样例如下:
    vim /etc/docker/daemon.json

    {
            "registry-mirrors": ["https://registry.docker-cn.com"],
            "live-restore": true,
            "log-driver":"json-file",
            "log-opts": {"max-size":"500m", "max-file":"1"}
    }

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

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

    // 重启docker守护进程
    systemctl daemon-reload
    systemctl restart docker

    参考:https://my.oschina.net/u/2289161/blog/1931390

  • 相关阅读:
    初步理解Java的三大特性——封装、继承和多态
    设计模式
    区分super和this
    类—矩形面积
    生成不重复的随机数(待完善)
    关于类的创建和调用
    生成验证码
    endsWith和startsWith同样效果其他形式的写法(2016.1.12)
    去除字符串中空格的方法(2016.1.12P141-2)
    java的抽象类
  • 原文地址:https://www.cnblogs.com/wintersoft/p/11941213.html
Copyright © 2020-2023  润新知