当前位置: 首页 > 面试题库 >

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

蓝恩
2023-03-14
问题内容

我该如何在主机中启动应用程序以便从正在运行的Docker容器中读取文件和stdout?

本质上我想这样做:

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

我将如何去做?更具体地说明我要在哪里进行此操作;我想读取Docker容器的日志和标准输出,并在其他地方处理这些日志。

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


问题答案:

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

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

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



 类似资料:
  • 问题内容: 从标准输入逐行读取的Scala配方是什么?类似于等效的Java代码: 问题答案: 最直接的前瞻性的方式将只使用它的一部分。但是,这很丑陋,因为您需要检查最终的空值: 这太冗长了,您宁可使用它。 我认为将使用更漂亮的方法:

  • 我编写docker文件是为了运行jar文件,而它并没有创建日志文件,请参阅下面的控制台是我的docker文件

  • 我想在脚本中做的是: 列出docker主机上某些正在运行的容器 获取相应的docker-compose.yml文件位置 使用docker-compose立即重新启动相应docker-compose项目的所有容器

  • 问题内容: 我想从命令行读取标准输入,但是在提示我输入之前,我的尝试以结束程序退出而告终。我正在寻找C#中的Console.ReadLine()等效项。 这是我目前拥有的: 问题答案: 我不确定块有什么问题 因为它可以在我的机器上使用。但是,对于下一个块,您需要一个指针,该指针指向要将输入分配给它们的变量。尝试替换为。不要使用,因为它解析内存中已有的字符串,而不是解析来自stdin的字符串。如果您

  • 问题内容: 我实际上尝试在600毫秒的时间内完成上述操作,此后它不应允许读取,但bufferedreader的readline阻塞了。请帮助 问题答案: 您可以使用BufferedReader.available()> 0检查是否有要读取的字符。

  • 我正在使用Docker为Mac。我正在Docker容器中运行一个基于nodejs的微服务。我想通过浏览器测试节点微服务。如何获取正在运行的docker容器的IP地址?