【问题标题】:Docker -json.log file clean upDocker -json.log 文件清理
【发布时间】:2021-09-16 09:57:05
【问题描述】:

在我的主机上,docker 安装了这个树中的文件名 -json.log

Docker
  |_ builder
  |_ buildkit
  |_ containerd
  |_ containers
       |_ container-id
             |_ **container-id-json.log**

占用大量空间并不断增加,我想知道这个文件的目的是什么?以及如何清理这个文件以节省空间,如果清理了会有什么后果。

【问题讨论】:

    标签: linux docker docker-machine


    【解决方案1】:
    #!/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
    

    2.设置Docker容器日志大小

    这是通过配置容器 docker-compose 的 max-size 选项来实现的

    【讨论】:

    • 这个脚本是做什么的,我只看到 echo 命令
    【解决方案2】:

    这些文件的目的是保存容器的执行日志,并且对于保存内存和在服务器重启时保存日志历史记录很有用。

    你可以清理这些文件,但是会有后果:

    一是与干净文件关联的容器的历史记录丢失。如果文件在清理时打开,另一个是 docker log writer 错误,具体取决于用于清理的方法。

    与这个问题相关的答案有很多:“如何清除 docker 日志?”

    所以我要总结并指出它们。

    您可以尝试使用 truncate 命令清理文件:

    sudo sh -c "truncate -s 0 /var/lib/docker/containers/*/*-json.log"
    

    另一种方法是删除并重新创建您的容器,这将重置您的日志。

    但是,在我看来,最好的方法是通过 docker 轮换日志。如official documentation about logging 中所述。

    docker run --log-opt max-size=10m --log-opt max-file=5 my-image:<version>
    

    学分和相关答案:

    用于登录 compose 文件的官方 docker 文档: https://docs.docker.com/compose/compose-file/compose-file-v3/#logging

    【讨论】:

      猜你喜欢
      • 2017-10-29
      • 1970-01-01
      • 2016-10-06
      • 1970-01-01
      • 2010-09-23
      • 2015-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多