简介

  • 记录docker部署下遇到的问题及解决方法

docker容器日志导致主机磁盘空间满了

什么是Docker日志

  • 在Docker中,日志是容器生成的所有输出,该输出保存在主机计算机上的日志文件中。这些日志文件可以帮助了解Docker容器的健康问题,调试问题,并监视应用程序行为。Docker在linux上,容器日志一般存放在 /var/lib/docker/containers/container_id/ 下面

为什么需要清理Docker日志

  • Docker日志文件可以变得相当大,因为他们持续记录容器生成的所有输出。如果不定期的清理这些日志文件,他们将占用大量的磁盘空间。在服务器上,磁盘空间非常重要。如果磁盘空间不足,将导致系统崩溃或者性能下降。此外,当Docker容器日志过大时,可能会导致调试问题过于复杂或深度,使用Docker日志分析工具成为不可避免的任务。

如何清理Docker日志

  • 清理Docker日志的最佳方法是通过Docker提供的内置支持在容器运行时管理日志级别并限制日志大小。但是,如果需要清理已经存在的日志文件,则可以用以下方法

  • 使用Docker命令清理
    • 清空所有容器的日志文件
      1
      
      docker container prune --filter "until=24h"
      
    • 这将会删除已经停止容器的日志,最后使用时间超过24h的容器的日志将会被保留,也可以将24h这个参数按需更改。
  • 手动清理Docker日志
    • 需要找出要删除的容器ID
      1
      
      docker container ls -a
      
    • 该命令将返回运行的,停止的和删除的容器列表,以及他们的container id, image 和 names
    • 在主机上找到日志文件,Docker日志文件通常在 /var/lib/docker/containers/容器ID/容器ID-json.log路径下,其中container_id为需要清理的容器ID
    • 清空日志文件
      1
      
      cat /dev/null > /var/lib/docker/containers/容器ID/容器ID-json.log
      

启动时设置日志文件大小

  • 参考 docker 官方的文档,重启docker启动时增加参数
    1
    
    docker run -it --log-opt max-size=10m --log-opt max-file=3 alpine ash