如何将Docker容器日志保存在机器上而不是容器中

时间:2018-11-29 13:09:10

标签: java docker logging docker-compose

我有一些正在使用docker-compose运行的测试。问题在于docker日志保存在容器内(这使调试变得复杂)。

我正在寻找一种配置docker-compose的方法,以将所有日志保存在我正在运行测试的机器上,而不是容器上。最好是对docker-compose.yml文件进行一些配置,但我愿意接受任何建议

2 个答案:

答案 0 :(得分:1)

保存您的日志并需要重新配置的不是docker-compose。它本身就是docker或您的服务,在docker内部运行,具体取决于您指的是什么日志。

如果您谈论的是docker日志,则应参考docker日志驱动程序配置页面: https://docs.docker.com/config/containers/logging/configure/

如果您要谈论由您的服务生成的日志,只需将可写卷从主机PC装入容器,然后配置软件以登录到该文件夹​​。 您可以像以下代码一样实现此目的:

docker-compose.yml:

...
my-service:
  image: xxx
  entrypoint: ["sh", "-c", "echo 'Hello World!' > /path/inside/docker/some_log_file" ]
  volumes:
    - /path/on/host:/path/inside/docker
...

您现在所服务的应该只登录/path/inside/docker/some_log_file

在主机上,您将在/path/on/host中看到所有这些文件

答案 1 :(得分:0)

我猜您正在寻找的场景是,您的Docker容器散布在多个主机上。因此,可能需要将docker容器设置为主机卷,并查看是否可以将主机卷映射到共享文件系统。

或编写一些在docker主机上运行的脚本,以使用scp命令等将日志文件从docker主机上映射的docker卷复制到您选择的远程位置。

或使用一些日志聚合框架作品https://stackify.com/log-aggregation-101/