docker 容器 日志文件过大

本文介绍了Docker容器日志文件默认存储位置为/var/lib/docker/containers/<container_id>/<container_id>-json.log,并提供了如何禁用特定容器日志的方法,即通过docker run命令设置--log-driver=none。此外,还提及了限制日志大小和数量的选项,如--log-opt max-size=5m和--log-opt max-file=10。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

docker版本
Client: Docker Engine - Community
 Version:           20.10.5
 API version:       1.41
 Go version:        go1.13.15
 Git commit:        55c4c88
 Built:             Tue Mar  2 20:33:55 2021
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server: Docker Engine - Community
 Engine:
  Version:          20.10.5
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.13.15
  Git commit:       363e9a8
  Built:            Tue Mar  2 20:32:17 2021
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.4.4
  GitCommit:        05f951a3781f4f2c1911b05e61c160e9c30eaa8e
 runc:
  Version:          1.0.0-rc93
  GitCommit:        12644e614e25b05da6fd08a38ffa0cfe1903fdec
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0
容器日志文件
# 日志文件位于/var/lib/docker/containers/*
# 日志文件大小
docker inspect --format '{{.LogPath}}' $(docker ps --format '{{.ID}}') | xargs du -h | sort -n  | tail

默认情况下,日志以JSON文件形式存储在Docker主机上。
/var/lib/docker/containers/<container_id>/<container_id>-json.log

# 查看CONTAINER ID 
docker ps

如果只想禁用特定容器的日志,则可以在docker run命令中使用–log-driver=none来禁用日志。
或者在启动时使用–log-opt max-size=5m --log-opt max-file=10

# 其中,--log-opt max-size=5m指定最大日志文件大小为5MB,并--log-opt max-file=10指定要轮换的最大文件数。
docker run -ti --name visruth-cv-container  --log-opt max-size=5m --log-opt max-file=10 ubuntu /bin/bash
### 如何清理 Docker 容器日志 #### 使用 `docker system prune` 命令清理未使用的资源 Docker 提供了一个内置命令用于清理未使用的资源,包括停止的容器、网络、卷以及构建缓存。此命令还可以间接减少日志占用的空间。运行以下命令即可执行全面清理: ```bash docker system prune -a ``` 该命令会移除所有未被活动容器使用的数据,从而释放磁盘空间[^1]。 #### 配置 Docker 日志轮转机制 为了避免日志文件,可以在启动容器时配置 Docker 的日志驱动程序及其选项。常用的日志驱动为 `json-file`,可以通过设置参数限制单个日志文件小和保留的日志文件数量。例如,在 `/etc/docker/daemon.json` 中添加如下配置: ```json { "log-driver": "json-file", "log-opts": { "max-size": "10m", // 单个日志文件的最尺寸 "max-file": "3" // 保留的日志文件数量 } } ``` 完成修改后重启 Docker 服务以应用更改: ```bash sudo systemctl restart docker ``` 这样可以有效防止日志文件无限增长[^2]。 #### 手动清理现有日志文件 如果现有的日志文件已经占据量磁盘空间,则需要手动清空这些文件的内容而不删除它们本身(因为正在运行中的容器仍然依赖于这些日志路径)。以下是具体操作方式: 进入 Docker 存储日志的位置,默认通常位于 `/var/lib/docker/containers/<container-id>/` 下面找到对应的 `-json.log` 文件,并将其内容截断为空: ```bash find /var/lib/docker/containers/ -name "*-json.log" | while read log; do echo "" > $log; done ``` 上述脚本遍历所有容器日志文件并将每条记录替换为空字符串,达到快速减小体积的目的[^3]。 另外需要注意的是,在实际生产环境中不建议频繁直接干预原始日志存储位置;更优的做法是采用专业的第三方日志收集工具如 ELK Stack 或 Fluentd 来统一管理和分析分布式系统的日志信息。 ```python import os def clear_docker_logs(): logs_path = '/var/lib/docker/containers/' for root, dirs, files in os.walk(logs_path): for file_name in files: if file_name.endswith('-json.log'): full_file_path = os.path.join(root, file_name) with open(full_file_path, 'w') as f: pass # Truncate the content of each found log to empty. ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值