在 docker 中配置日志驱动无阻断模式,核心是设置 log-opt max-size 和 log-opt max-file 参数。当容器日志达到指定大小或文件数量上限时,docker 会自动轮转并截断旧日志,防止磁盘写满导致容器停止运行。

daemon.json 如何全局配置日志轮转阈值
通过修改 Docker 守护进程的配置文件 daemon.json,可以统一所有新建容器的日志行为。设置 max-size 限制单个日志文件大小(如 100MB),设置 max-file 限制保留的日志文件数量(如 3个)。这样即使不手动干预,日志也会自动清理,避免磁盘空间耗尽引发的阻断。

{
"log-driver": "json-file",
"log-opts": {
"max-size": "100m",
"max-file": "3"
}
}
上述配置生效后,重启 Docker 服务即可生效。新创建的容器将继承这些默认值。如果某个容器需要特殊处理,可以在启动时通过 --log-opt 覆盖全局设置。
单容器启动时如何覆盖默认日志策略
对于特定业务容器,可以通过 docker run 命令的 --log-opt 参数单独指定日志驱动选项。这种方式优先级高于 daemon.json 中的全局配置,适合对日志保留有特殊需求的场景。例如,为数据库容器设置更大的日志容量,以减少轮转频率。
Docker Hub (hub.docker.com)。此技能适用于所有 Docker Hub 操作,包括读取、创建、更新和删除数据。只要任务涉及 Docker Hub,就使用此技能。

docker run -d \ --name my-app \ --log-opt max-size=500m \ --log-opt max-file=5 \ nginx:latest
执行该命令后,my-app 容器的日志将被限制在 500MB 以内,且最多保留 5 个历史文件。超出部分会被自动删除,确保不会因日志膨胀而阻塞容器运行。
日志轮转触发时容器是否会暂停写入
当日志达到 max-size 或 max-file 限制时,Docker 会立即触发轮转机制。此时,当前日志文件会被重命名(如 .1, .2),并创建一个新的空日志文件供容器继续写入。这个过程是原子性的,容器无需暂停或重启,应用层感知不到中断,从而保证业务连续性。










