如何更改 docker 容器日志的保存位置?

Zap*_*nuk 11 docker dockerfile docker-compose

我想将容器的所有标准输出消息记录到外部驱动器,因为我在“docker”驱动器上的空间有限。

使用 docker-compose v3,我使用“json-file”驱动程序将日志保存在 10 MB 块中

logging:
  driver: "json-file"
  options:
    max-size: 10m
Run Code Online (Sandbox Code Playgroud)

默认情况下,结果日志保存在 /var/lib/docker/containers/<container id>/<container id>-json.log

有什么办法可以改变这个位置吗?

小智 0

我不确定是否有现成的解决方案。

您可以尝试的一件事是对 json 文件日志记录驱动程序设置最低限制,但将所有日志保存在单独的目录中,如下所示:

docker-compose logs -f 2>&1 | multilog t s1048576 n100 ./my_log_directory
Run Code Online (Sandbox Code Playgroud)

您应该在后台运行它来记录所有日志

需要此位将所有 stderr 视为 stdin,以便它将由 multilog 保存:

2>&1
Run Code Online (Sandbox Code Playgroud)

有关多重日志的更多信息,请访问:https://serverfault.com/questions/445118/rotating-logs- generated-by-a-process-that-logs-to-stdin#445461

尽管它可能满足您的需求,但您仍然会丢失 json 文件驱动程序提供的一些信息