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

时间:2018-11-20 10:36:10

标签: docker docker-compose dockerfile

我想将我的容器的所有stdout消息记录到外部驱动器,因为我在'docker'驱动器上的空间有限。

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

logging:
  driver: "json-file"
  options:
    max-size: 10m

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

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

2 个答案:

答案 0 :(得分:0)

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

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

docker-compose logs -f 2>&1 | multilog t s1048576 n100 ./my_log_directory

您应该在后台运行此命令以记录所有日志

将所有stderr都视为stdin时需要此位,因此它将通过multilog保存:

2>&1

此处提供有关多日志的更多信息:https://serverfault.com/questions/445118/rotating-logs-generated-by-a-process-that-logs-to-stdin#445461

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

答案 1 :(得分:0)

您可以使用另一个 Docker 日志驱动程序将日志流式传输到外部日志服务器(在具有外部驱动器的另一台主机中设置)。 Docker 支持许多驱动程序: 此处说明:https://docs.docker.com/config/containers/logging/configure/