datetime:2025/01/24 11:19
author:nzb
Docker 日志管理
Restart vs. Recreate 容器
使用 systemctl restart docker
命令手动重启 Docker 服务时,行为也是一样的。 要知道,只有在删除和重新创建 Docker
容器时,才会重置 Docker
日志。 简单地停止和启动容器并不会重置日志。
检查 Docker 日志大小
每个 Docker
容器的目录都位于/var/lib/docker/containers/
下。 在每个容器的目录中,你会发现一个以-json.log
结尾的文件,其中包含该特定容器的日志。 这些文件默认采用 JSON
格式,并捕获容器的标准输出(stdout)和标准错误(stderr)流。
/var/lib/docker/containers/<container-id>/<container-id>-json.log
- 获取所有日志文件的大小
find /var/lib/docker/containers/ -name "*json.log" | xargs du -h | sort -hr
# root@pasture-10:/home/blues/vscode_projects/weekly# find /var/lib/docker/containers/ -name "*json.log" | xargs du -h | sort -hr
# 24M /var/lib/docker/containers/590a480399e7d0252e2f75bb16cf355c4c63c6423865760f1da3715a2ac49c45/590a480399e7d0252e2f75bb16cf355c4c63c6423865760f1da3715a2ac49c45-json.log
# 40K /var/lib/docker/containers/f0a7e0e16108135b16c01c58f8d45db5ae3be205440f2c058164829b7e588bca/f0a7e0e16108135b16c01c58f8d45db5ae3be205440f2c058164829b7e588bca-json.log
# 4.0K /var/lib/docker/containers/d178bcf1cda1b39112d67030d222098ea45eadb7b0fc2bcbdb68ed224fca3328/d178bcf1cda1b39112d67030d222098ea45eadb7b0fc2bcbdb68ed224fca3328-json.log
# 4.0K /var/lib/docker/containers/410140ff802acd958c1a910cde9f9597be768a949897ab8ff7f5e67dc35d5177/410140ff802acd958c1a910cde9f9597be768a949897ab8ff7f5e67dc35d5177-json.log
- 获取容器名
docker inspect --format='{{.Name}}' <container_id>
# docker inspect --format='{{.Name}}' 590a480399e7d0252e2f75bb16cf355c4c63c6423865760f1da3715a2ac49c45
# /maxkb
# docker inspect --format='{{.LogPath}}' <container_name>
# /var/lib/docker/containers/590a480399e7d0252e2f75bb16cf355c4c63c6423865760f1da3715a2ac49c45/590a480399e7d0252e2f75bb16cf355c4c63c6423865760f1da3715a2ac49c45-json.log
清理 Docker 日志
临时解决方法
- 清理指定容器日志
truncate -s 0 /var/lib/docker/containers/590a480399e7d0252e2f75bb16cf355c4c63c6423865760f1da3715a2ac49c45/590a480399e7d0252e2f75bb16cf355c4c63c6423865760f1da3715a2ac49c45-json.log
- 清理所有Docker日志文件
sudo truncate -s 0 /var/lib/docker/containers/*/*-json.log
永久解决方案:设置Docker日志大小限制
要对 Docker
守护进程运行的所有容器全局应用日志轮转设置,可以编辑 Docker
守护进程配置文件,该文件通常位于/etc/docker/daemon.json
。 如果该文件不存在,可以通过执行类似以下的命令来创建它:
sudo vim /etc/docker/daemon.json
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}
- 重启 Docker 服务
sudo systemctl restart docker
重要的是要记住,这些更改只会影响新创建的 Docker 容器,而不会影响已在运行的容器。 要将更改应用于现有容器,必须先删除它们,然后重新创建。 具体方法如下。
# 单个容器
docker rm -f <container_id_or_name>
# docker-compose 管理
docker compose down
docker compose up -d
# 确认是否失效
docker inspect <container_name> # LogConfig item