logging - 如何从正在运行的 Docker 容器中读取文件和标准输出

标签 logging go docker

我将如何在我的主机中启动一个应用程序以便从正在运行的 docker 容器中读取文件和标准输出?

基本上我想这样做:

docker start containerid   
./myapp // This app will *somehow* have access files and stdout generated by the container I just stared. 

我该怎么做呢?更具体地说,我想去哪里;我想读取 docker 容器的日志和标准输出,并在其他地方处理这些日志。

我也愿意创建另一个 docker 容器,它可以从另一个容器中读取文件和标准输出,但我不知道这是否可能。

最佳答案

docker容器启动的进程的stdout可通过docker logs $containerid command获得(使用 -f 让它永远运行)。另一种选择是直接通过 docker remote API 流式传输日志。 .

对于访问日志文件(只有在必须时,考虑记录到标准输出或其他标准解决方案,如 syslogd),您唯一的实时选项是 configure a volume (就像 Marcus Hughes 建议的那样)因此日志存储在容器外部,可用于从主机或其他容器进行处理。

如果您不需要实时访问日志,you can export the files (以 tar 格式)使用 docker export

关于logging - 如何从正在运行的 Docker 容器中读取文件和标准输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24621067/

相关文章:

go - 获取 url 中的片段值

Docker PHP 访问控制允许来源 CORS

linux - 如何在 Linux/bash 中为 shell 脚本创建状态日志

sql-server - 如何在 SSIS 中创建日志文件

java - 将有用的状态信息传递给 Java 中的异常的好方法是什么?

selenium - 更改在 docker 中运行的 selenium 节点的日志级别

docker - 如何使用 consul 和 gliderlabs/registrator 防止僵尸服务?

java - 如何在使用 CommonsRequestLoggingFilter 处理请求正文之前记录请求正文?

go - 在左侧扩展 slice 长度

go - 在 Go 模板中使用 {{}} 原始表达式