【问题标题】:How to save docker container logs on the machine instead of in the container如何将docker容器日志保存在机器上而不是容器中
【发布时间】:2018-11-29 13:09:09
【问题描述】:

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

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

【问题讨论】:

    标签: java docker logging docker-compose


    【解决方案1】:

    不是docker-compose 保存您的日志并且必须重新配置。它是 docker 本身或您的服务,在该 docker 中运行,具体取决于您的意思是什么日志。

    如果你说的是docker日志,你应该参考docker log驱动配置页面: 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 中看到所有这些文件

    【讨论】:

    • 我该怎么做第二个?我希望我的日志在音量上而不是在容器内。
    【解决方案2】:

    我猜你正在寻找的场景是你的 docker 容器分散在多台主机上。所以可能你需要将 docker 容器制作成主机卷,看看是否可以将主机卷映射到共享文件系统。

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

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

    【讨论】:

      猜你喜欢
      • 2021-01-08
      • 2020-11-20
      • 1970-01-01
      • 2019-11-30
      • 2023-03-04
      • 2019-03-28
      • 2014-04-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多