【问题标题】:Saving logs from docker container to windows file system将日志从 docker 容器保存到 windows 文件系统
【发布时间】:2019-09-08 10:47:37
【问题描述】:

我刚开始学习 docker,有兴趣将日志从容器保存到本地机器(用于存储/查看) 有没有办法将 /var/lib/docker/containers/CONTAINER_ID/CONTAINER_ID-json.log 保存到 Windows 文件系统?

我尝试在运行映像“dtf”的 docker-compose.yml 文件中指定音量

services:
  web:
    image: dtf
    ports:
      - '5000:5000'
    logging:
      driver: "json-file"
      options:
        max-size: "1k"
        max-file: "3"
    volumes:
      - C:\logs:/var/lib/docker/containers/

根据我对 docker 卷的了解,我应该能够访问 C:\logs 中的 .log 文件,但我不确定如何正确写入文件本身的路径(/CONTAINER_ID/ 部分)

【问题讨论】:

  • 您的日志是否存储在 docker 容器中的某个地方?还是应用程序将日志打印到标准输出?
  • command docker logs image_name 打印以前的日志,所以我认为它们必须存储?
  • 来自容器的日志以json 格式存储在主机中的某个位置。 (您是否正在使用默认的日志驱动程序)。我假设这不是您想要的日志。你想要容器吐出的日志。因此我的问题是,您的应用程序是将其日志写入文件还是打印到标准输出?
  • 可能是标准输出,如果这是在docker logs image_name 命令之后打印的内容
  • 然后您需要将输出docker logs 保存到本地系统。检查如何在 Windows 中进行输出重定向

标签: docker docker-compose


【解决方案1】:

为此,您需要查找 docker 卷。您可以将主机文件系统的一部分暴露给 docker 容器。 查看Docker logging strategies,它说明了执行日志记录的不同方法。推荐的方法是Docker logging driver,更多信息请查看Configuring logging drivers

Better ways of handling logging in containers 所示,您可以使用以下命令通过data volume container 将日志文件夹与主机文件夹链接:

# docker run -ti -v /dev/log:/dev/log fedora sh

上述解决方案取自stackoverflow answer,仅提供答案,以防原始解决方案链接因删除或其他原因而过时。

【讨论】:

  • 我尝试像 C:\logs:/var/lib/docker/containers/[container-id]/ 这样创建卷,但它似乎不包含任何 .log 文件,而 docker logs image_name 确实打印日志条目
  • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review
  • 我已经修改了我的答案,以在之前提供的链接中显示相同的原始建议,以防该链接过时。感谢@Andrey 的建议
猜你喜欢
  • 2019-03-28
  • 2021-04-04
  • 2019-11-30
  • 1970-01-01
  • 2020-11-20
  • 2018-02-28
  • 2013-06-02
  • 1970-01-01
  • 2016-05-26
相关资源
最近更新 更多