当前位置: 首页 > 知识库问答 >
问题:

如何在Docker容器中使用Apache而不将任何内容写入磁盘(将所有日志写入STDIO/STDERR)?

薛坚
2023-03-14

我正在docker容器中运行Apache2,不想向磁盘写入任何内容,只想向stdout和stderr写入日志。我见过几种不同的方法(Supervisord和stdout/stderr,Apache访问stdout日志),但这些方法看起来像是黑客。难道就没有办法默认这样做吗?

需要说明的是,我不想对日志进行跟踪,因为这将导致将内容写入容器中的磁盘。

签入Docker Hub(https://Hub.Docker.com/_/httpd/)的“正式”版本仍然写入磁盘。

另外,我需要做什么来阻止Apache在尝试滚动日志时失败呢?

共有1个答案

谢同化
2023-03-14

我不确定这一点不会影响httpd的日志记录(例如,如果它试图在文件中查找),但是您可以设置从日志路径到/dev/stdout和/dev/stderr的符号链接,如下所示:

ln -sf /dev/stdout /path/to/access.log
ln -sf /dev/stderr /path/to/error.log

从Docker Hub到vanilla httpd容器的entry命令可以设置为类似于

ln -sf /dev/stdout /path/to/access.log && ln -sf /dev/stderr /path/to/error.log && /path/to/httpd
 类似资料:
  • 在中有一个,可以将日志写入到。 我需要在中使用相同的功能,但我还没有找到这样做的选项。有人知道如何使用实现同样的效果吗?

  • 问题内容: 我正在尝试使用Go写入日志文件。 我尝试了几种方法,但都失败了。这是我尝试过的: 日志文件被创建,但是没有任何打印或附加到该文件。为什么? 问题答案: 过去的工作方式一定不同,但这对我有用: 基于Go文档,不能用于,因为它会打开文件“供阅读:” 打开命名文件以供读取。如果成功,则可以使用返回文件上的方法进行读取;关联的文件描述符具有mode 。如果有错误,它将是类型。 编辑 检查后移至

  • 问题内容: 我在VM上运行容器。我的容器默认将日志写入/var/lib/docker/containers/CONTAINER_ID/CONTAINER_ID- json.log文件,直到磁盘已满。 当前,我必须手动删除此文件,以避免磁盘已满。我读到在Docker 1.8中会有一个参数来旋转日志。您会建议什么作为当前解决方法? 问题答案: Docker 1.8已发布,带有日志轮换选项。新增: 当容

  • 我正在 VM 上运行容器。默认情况下,我的容器将日志写入 /var/lib/泊坞窗/容器/CONTAINER_ID/CONTAINER_ID-json.log 文件,直到磁盘已满。 目前,我必须手动删除这个文件,以避免磁盘已满。我听说Docker 1.8中会有一个参数来旋转日志。您建议当前的解决方法是什么?

  • 我决定使用slf4j而不是Java自己的日志记录。我已经成功地使用SLF4J登录到控制台。但我不知道如何将其写入日志文件。日志文件将帮助我们收集运行时可能出现的错误。 我通过这样做来实现slf4j, 私有静态最终org.slf4j.LOGGER LOGGER=org.slf4j.loggerfactory.getlogger(class1.class); PropertyConfigurator.