一尘不染

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

go

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

基本上我想这样做:

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

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

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


阅读 223

收藏
2021-12-13

共1个答案

一尘不染

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

对于访问日志文件(只有在必须时,请考虑记录到 stdout 或其他标准解决方案,例如 syslogd),您唯一的实时选项是配置一个卷(如 Marcus Hughes 建议的那样),以便日志存储在容器外并可供处理从主机或另一个容器。

如果您不需要实时访问日志,您可以使用以下命令导出文件(以 tar 格式)docker export

2021-12-13