使用 Docker 系统日志记录驱动程序时仅从 STDERR 收集

Collect only from STDERR when using Docker syslog logging driver

我们是 运行 我们的 Docker 容器,系统日志驱动程序如下:

docker run -d --name <<container_name>> --log-driver syslog <<image_name>>

这使得 Docker 守护程序将消息从 STDOUT 和 STDERR 转发到系统日志。有没有办法让我选择只捕获 STDOUT 或只捕获 STDERR?我检查了“-a”标志,但它在与“-d”一起使用时不起作用——这对我们来说是必不可少的。我检查了这个问题 [https://github.com/docker/docker/issues/7440],但它似乎与 docker logs 命令有关,该命令不适用于我们的情况(使用 syslog 驱动程序时)。

有没有办法在后台使用容器运行中的syslog日志驱动时实现选择性转发?

听起来最好的选择是丢弃不需要的输出:

RUN someCode > /dev/null

这将丢弃所有到 STDOUT 的输出(当您使用没有数组的 RUN 时,它会使用 shell 评估您的命令)并单独保留 STDERR。不幸的是,如果您希望 STDOUT 在某个地方也可用,那您就不走运了。 (您可以将 STDOUT 定向到一个文件,但随后您真的也想开始考虑日志轮换,这会带来很多工作。)