Docker没有显示写在/ dev / stdout中的日志

时间:2016-10-11 16:16:46

标签: docker docker-compose

我用:

启动了一些docker容器
docker-compose up -d

(这里是docker-compose.yml

然后:

docker-compose logs -f web

但如果我写在另一个shell上:

docker-compose exec web echo "hello" >> /dev/stdout

实时日志屏幕中没有任何内容。 任何其他容器也是如此。为什么?我做错了吗?

2 个答案:

答案 0 :(得分:2)

每个进程的

/dev/stdout都不同。您的docker-compose logs只会显示PID 1进程的输出,而不会显示在该容器命名空间中运行的其他进程。

更新:还请注意:

  • >> /dev/stdout将适用于主机上的docker compose exec web echo "hello" ..而不是容器内的echo "hello"
  • >> /dev/stdout是一种无操作,因为默认情况下进程会写入stdout ..对于stdout,>>(追加)与>相同(重定向) )因为没有预先存在的输出可以被覆盖/替换。

答案 1 :(得分:0)

解决了将其置于虚拟主机配置中的问题:

CustomLog /proc/self/fd/1 combined
ErrorLog /proc/self/fd/2

因此,为了在docker上显示日志,您可以使用/proc/self/fd/1/proc/self/fd/2