管理(限制)Docker日志大小的方法总结

 更新时间:2025年08月12日 09:51:45   作者:欧阳方超  
在容器化部署的时候,因为没有指定日志的最大存储时间,导致磁盘被充爆,这篇文章主要介绍了管理(限制)Docker日志大小的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下

1 概述

在使用Docker过程中,如果不对容器产生的日志进行限制,可能会迅速占用大量的磁盘空间,本文介绍如何限制Docker日志大小,以便更好地管理Docker环境。

2 Docker日志简介

Docker默认使用json-file日志驱动来记录容器的标准输出(stdout)和标准错误(stderr)。这些日志文件通常存储在/var/lib/docker/containers/<container-id>目录下,文件名格式为<container-id>-json.log。随着容器的持续运行,日志文件会不断增大,如果没有适当的管理策略,可能会导致磁盘空间被耗尽。

使用下面的命令可以查看Docker使用的日志驱动:

[xiaoliu@localhost ~]$ sudo docker info|grep "Logging Driver"
 Logging Driver: json-file

3 限制Docker日志大小的方法

限制日志大小的方法通常有两种,一种的全局设置,另一种是单个容器设置。

3.1 通过Docker守护进程配置文件(全局设置)

3.1.1 修改配置文件

在Docker的守护进程配置文件daemon.json(如果没有需要创建,通常在/etc/docker目录下创建)中添加或修改以下内容:

{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m",
    "max-file": "5"
  }
}

其中,log-driver指定使用json-file日志驱动(这是默认驱动,如果之前没有更改过,可不设置)。max-size设置单个日志文件的最大大小,这里设置为100m,即100MB,max-file设置保留的最大日志文件数量,这里设置为3,表示当日志文件达到最大大小时,Docker会自动创建新的日志文件,并保留最近的3个日志文件,旧的日志文件将被删除。

3.1.2 重启Docker服务

重启Docker服务,使之生效:

sudo systemctl daemon-reload
sudo systemctl restart docker

注意,通过这种方式设置的日志限制只对新创建的容器生效,对于已经在运行的容器,需要重新创建才能应用新的日志限制。

3.2 在创建容器时指定日志选项(单个容器设置)

使用docker run命令创建容器时,可以通过–log-driver和–log-opt参数来指定,下面是一个创建nginx容器并指定参数的示例:

[xiaoliu@localhost ~]$ sudo docker run -d --name nginx -p 80:80 nginx:1.26.3-alpine-perl --log-driver=json-file --log-opt max-size=100m --log-opt max-file=5
92ba89c7694c485194bb9e787efda74c68795b53a977f38d66afa87bda85572e

这种方式,可以为每个容器单独设置不同的日志限制策略,更加灵活地管理日志。

对于使用docker-compose管理的容器,可以在docker-compose.yml文件中为每个服务配置日志选项,例如,下面是一个创建nginx容器的例子:

version: "3"

services:
  nginx:
    image: nginx:1.26.3-alpine-perl
    container_name: mynginx
    ports:
      - "80:80"
    logging:
      driver: "json-file"
      options:
        max-size: 100m
        max-file: "5"

这样在使用docker-compose up启动容器时,mynginx服务的日志将按照设置的规则进行管理。

4 总结

通过上面的方法可以有效限制Docker日志的大小,合理管理磁盘空间。

到此这篇关于管理(限制)Docker日志大小的文章就介绍到这了,更多相关限制Docker日志大小内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • docker cp 拷贝文件 和 进入容器的操作

    docker cp 拷贝文件 和 进入容器的操作

    这篇文章主要介绍了docker cp 拷贝文件 和 进入容器的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • docker拉取redis最新镜像并运行的方法详解

    docker拉取redis最新镜像并运行的方法详解

    这篇文章主要介绍了docker拉取redis最新镜像并运行的方法,文章通过图文结合的方式给大家介绍的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2024-05-05
  • Docker使用Calico网络模式配置及问题处理方法

    Docker使用Calico网络模式配置及问题处理方法

    这篇文章主要介绍了Docker使用Calico网络模式配置及问题处理,设计思想是Calico不使用隧道或者NAT来实现转发,而是巧妙的把所有二三层流量转换成三层流量,并通过host上路由配置完成跨host转发,需要的朋友可以参考下
    2022-11-11
  • 关于docker启动jenkins环境的问题

    关于docker启动jenkins环境的问题

    这篇文章主要介绍了docker启动jenkins环境的问题,文中提到了jenkins基本工作原理及管理员密码获取方法,对docker启动jenkins环境相关知识感兴趣的朋友一起看看吧
    2022-04-04
  • docker挂载NVIDIA显卡运行pytorch的方法

    docker挂载NVIDIA显卡运行pytorch的方法

    这篇文章主要介绍了docker挂载NVIDIA显卡运行pytorch的方法,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2018-02-02
  • Docker部署SonarQube的详细流程

    Docker部署SonarQube的详细流程

    SonarQube是一款开源代码检测工具,运作流程是这样的,先通过 sonar-scanner 插件扫描代码,把数据存储到数据库,sonarQube 读取数据库,将数据库展现在 web 平台,本篇介绍通过 docker 来安装,感兴趣的朋友一起看看吧
    2022-02-02
  • Docker部署rabbitmq遇到的两个问题

    Docker部署rabbitmq遇到的两个问题

    当使用docker部署rabbitmq时遇到两个问题,访问交换机时报错,另一种是访问channel时报错,本文给大家分享解决方案,感兴趣的朋友跟随小编一起看看吧
    2021-07-07
  • Docker命令中的各种参数使用(run、v、rm、-w、-u、-e)

    Docker命令中的各种参数使用(run、v、rm、-w、-u、-e)

    本文主要介绍了Docker命令中的各种参数使用(run、v、rm、-w、-u、-e),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • 远程连接Docker上的Mysql失败的分析与解决方案

    远程连接Docker上的Mysql失败的分析与解决方案

    这篇文章主要介绍了远程连接Docker上的Mysql失败的分析与解决方案的相关资料,需要的朋友可以参考下
    2023-01-01
  • Docker设置日志滚动的解决方案

    Docker设置日志滚动的解决方案

    Docker容器默认将日志写入同一文件,可能导致磁盘满,解决方案包括修改全局docker.service配置或针对特定容器修改hostconfig.json,下面给大家介绍Docker设置日志滚动的解决方案,感兴趣的朋友跟随小编一起看看吧
    2024-10-10

最新评论