Docker设置日志滚动

问题描述

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

解决方案

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

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

1.修改Docker 配置

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

复制代码
vim /etc/docker/daemon.json

添加日志配置:

shell 复制代码
  "log-driver": "json-file", 
  "log-opts": {
    "max-size": "100m",
    "max-file": "3"
  }

log-opts的参数说明:

参数 说明
max-size 容器日志文件上限大小
max-file 容器日志文件上限个数
2.重启Docker守护进程使配置生效
复制代码
systemctl restart docker
3. 查看日志文件是否生效

查看日志所在路径

shell 复制代码
docker inspect [容器名]

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

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

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

  1. 查看该容器日志配置文件路径:docker inspect [容器名]

  2. 进入容器的日志配置文件目录:如cd /var/lib/docker/containers/<容器名>

  3. 关闭容器服务:service docker stop

  4. 修改hostconfig.json 配置文件,其LogConfig中的默认为"Config":{}, 改为为 "Config":{"max-file":"3", "max-size": "100m"}

    shell 复制代码
    cp hostconfig.json hostconfig.json_bak		# 备份配置文件
    vim hostconfig.json					# 修改 LogConfig 中的 Config
  5. 重启docker,service docker start.

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

相关推荐
難釋懷1 分钟前
Nginx水平扩展
运维·nginx
森叶2 分钟前
Electron 多进程下的“库引入“全解析:核心模块、Electron API、第三方依赖与 utilityProcess 的依赖处理
运维·javascript·electron
AOwhisky8 分钟前
Redis 学习笔记(第二期):核心数据类型与消息队列实战
运维·数据库·redis·笔记·学习·云计算
南岸的水8 分钟前
ubuntu里面SDK编译指令及报错处理
linux·运维·ubuntu
爱网络爱Linux11 分钟前
Linux 服务器开机慢?启动链路优化实战
linux·运维·redhat·rhce·rhca·红帽认证
buhuizhiyuci13 分钟前
【Linux篇】数字世界的底层认识, 它是底层的地基——进程概念的认识
linux·运维·服务器
BizViewStudio15 分钟前
2026 年 GEO 成为企业线上流量增长核心风口|2026 品牌 GEO 运营指南,6 家全链路优化服务商解析
运维·网络·人工智能·microsoft·ai
Gong-Yu16 分钟前
MySQL数据库运维——性能优化进阶1️⃣
运维·数据库·mysql·性能优化
枫叶林FYL27 分钟前
项目十一:Saga模式分布式旅行预订系统 核心服务实现与Saga编排器
数据库·python·docker
取名好樊27 分钟前
Windows Docker PostgreSQL 端口绑定失败问题记录
windows·docker·postgresql