我想将我的容器的所有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
有什么办法可以改变这个位置?
答案 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/