zoukankan      html  css  js  c++  java
  • docker 日志配置与清理

    一,docker 日志说明

    docker容器在运行一定时间后会产生大量的日志,导致磁盘空间问题出现。
    现在有2个方案可以限制docker容器日志文件大小及个数

    二,容器范围内

    docker run或dokcer create时添加参数
    如创建并运行

    docker run --log-opt max-size=10m --log-opt max-file=3
    

    三,全局范围内

    修改docker daemon.json文件,配置日志文件参数
    默认 /etc/docker/daemon.json

    {
    	"log-driver": "json-file",
    	"log-opts": {
    		"max-size": "50m",
    		"max-file": "1"
    	}
    }
    

    修改后,docker需要重新加载配置文件和重启。
    CentOS7的操作

    systemctl daemon-reload
    systemctl restart docker
    

    注意:新创建的容器会生效,原有容器不生效。

    参数说明
    参数 说明
    log-opts max-size 容器日志文件上限大小
    log-opts max-file 窗口日志文件上限个数

    四,查出Docker容器日志并删除脚本

    默认查找目录 /var/lib/docker/containers/

    #!/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 ========"
    

    docker容器正在运行的话,使用rm -rf方式删除日志后,通过df -h会发现磁盘空间并没有释放。
    原因是通过rm -rf删除,将会从文件系统的目录结构上解除链接(unlink)。
    如果文件是被打开的(有一个进程正在使用),那么进程将仍然可以读取该文件,磁盘空间也是一直被占用。
    正确操作覆盖操作 *cat /dev/null > -json.log。
    或者可以通过rm -rf删除后重启docker容器。

  • 相关阅读:
    Codeforces Round 546 (Div. 2)
    Codeforces Round 545 (Div. 2)
    Codeforces Round 544(Div. 3)
    牛客小白月赛12
    Codeforces Round 261(Div. 2)
    Codeforces Round 260(Div. 2)
    Codeforces Round 259(Div. 2)
    Codeforces Round 258(Div. 2)
    Codeforces Round 257 (Div. 2)
    《A First Course in Probability》-chaper5-连续型随机变量-随机变量函数的分布
  • 原文地址:https://www.cnblogs.com/xiaolang666/p/14555630.html
Copyright © 2011-2022 走看看