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

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

问题描述

Docker 容器中的进程会将打印到控制台(console)的日志保存到容器的目录下,默认的 Docker 配置不带有日志的回滚。会在自己的容器目录下往同一个日志文件中不停写入,最后会导致磁盘空间占满的问题

解决方案

方案一:全局范围内修改(仅对新容器生效)

修改 docker.service 的配置,改完后 docker run 的新容器都可以应用该配置,但旧的 container 不生效。

1.修改Docker 配置

如果该命令不生效请参考 注意事项 2

vim /etc/docker/daemon.json

添加日志配置:

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

log-opts的参数说明:

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

2.重启Docker守护进程使配置生效

systemctl restart docker

3. 查看日志文件是否生效

查看日志所在路径

docker inspect [容器名]

其中的 LogPath 字典项就是该容器的日志文件。

注意事项

  • 上述操作执行完后只能影响新 docker run 的容器,旧的容器不生效,若要修改现有容器配置,请查看解决方案2.
  • 上述步骤 1 中的 daemon.json 可能不存在,存在另一个 daemon.conf 可以将 daemon.conf 改为 daemon.json ,但是非常不建议!!!,这样更改后旧的容器会不认新配置导致旧容器消失,需要通过 docker run 镜像重新启动新的容器。 如果不小心误操作更改了,可以将原文件恢复,重启 docker 守护进程(步骤三),旧的容器会重新出现。
  • Docker 默认安装后没有 daemon.json 这个文件,需要手动创建,需要Docker 的版本大于 1.12。 建议在安装完 Docker 后优先创建 daemon.json 文件,避免以后更改配置的不便。
  • 修改后如果配置没有生效,请检查 /lib/systemd/system/docker.service 文件,确认 ExecStart 字段其后有 --config-file=/etc/docker/daemon.json 配置,如果没有添加上后执行 systemctl daemon-reload ,然后重启 docker 服务 systemctl restart docker.service ,重启后检查 ps aux | grep dockerd 查看配置有没有正常配置。

方案二:修改已存在的容器配置

  • 查看该容器日志配置文件路径:docker inspect [容器名]
  • 进入容器的日志配置文件目录:如cd /var/lib/docker/containers/<容器名>
  • 关闭容器服务:service docker stop
  • 修改hostconfig.json 配置文件,其LogConfig中的默认为"Config":{}, 改为为 "Config":{"max-file":"3", "max-size": "100m"}
cp hostconfig.json hostconfig.json_bak		# 备份配置文件
vim hostconfig.json					# 修改 LogConfig 中的 Config
  • 重启docker,service docker start.

按以上方法操作后 Docker 容器将会按照配置的的日志回滚规则管理日志文件,确保日志文件不会无限增长,也能够方便地查看日志文件。

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

您可能感兴趣的文章:

相关文章

  • docker容器存放目录磁盘空间满了的解决

    docker容器存放目录磁盘空间满了的解决

    这篇文章主要介绍了docker容器存放目录磁盘空间满了的解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • 搭建Docker私有仓库(自签名方式)

    搭建Docker私有仓库(自签名方式)

    为了能集中管理我们创建好的镜像,方便部署服务,我们会创建私有的Docker仓库。这篇文章主要介绍了搭建Docker私有仓库(自签名方式),具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-02-02
  • 关于docker启动jenkins环境的问题

    关于docker启动jenkins环境的问题

    这篇文章主要介绍了docker启动jenkins环境的问题,文中提到了jenkins基本工作原理及管理员密码获取方法,对docker启动jenkins环境相关知识感兴趣的朋友一起看看吧
    2022-04-04
  • docker实现将本地文件复制到docker容器内

    docker实现将本地文件复制到docker容器内

    这篇文章主要介绍了docker实现将本地文件复制到docker容器内方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • 如何清理 Docker 占用的磁盘空间的方法

    如何清理 Docker 占用的磁盘空间的方法

    这篇文章主要介绍了详解如何清理 Docker 占用的磁盘空间,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-01-01
  • docker build -t 和 docker build -f 区别解析

    docker build -t 和 docker build -f 区别解析

    docker build 是用于构建Docker镜像的命令,它允许你基于一个Dockerfile来创建一个镜像,在 docker build 命令中,有两个常用的选项 -t 和 -f,它们有不同的作用,这篇文章主要介绍了docker build -t 和 docker build -f 区别,需要的朋友可以参考下
    2023-08-08
  • 远程连接Docker上的Mysql失败的分析与解决方案

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

    这篇文章主要介绍了远程连接Docker上的Mysql失败的分析与解决方案的相关资料,需要的朋友可以参考下
    2023-01-01
  • Docker中的COPY指令和ADD指令详解

    Docker中的COPY指令和ADD指令详解

    COPY 和 ADD 都是 Dockerfile 中的指令,有着类似的作用。它们允许我们将文件从特定位置复制到 Docker 镜像中,这篇文章主要介绍了Docker中的COPY指令和ADD指令,需要的朋友可以参考下
    2022-06-06
  • dockerfile基于apline将JDK20打包成镜像

    dockerfile基于apline将JDK20打包成镜像

    这篇文章主要为大家介绍了dockerfile基于apline将JDK20打包成镜像步骤及验证,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2024-02-02
  • Docker 网络代理配置及防火墙设置的方法步骤

    Docker 网络代理配置及防火墙设置的方法步骤

    在服务器无法直接访问外网的环境中,Docker命令需要通过网络代理连接,本文就来介绍一下Docker 网络代理配置及防火墙设置的方法步骤,感兴趣的可以了解一下
    2024-10-10

最新评论