我用:
启动了一些docker容器docker-compose up -d
(这里是docker-compose.yml)
然后:
docker-compose logs -f web
但如果我写在另一个shell上:
docker-compose exec web echo "hello" >> /dev/stdout
实时日志屏幕中没有任何内容。 任何其他容器也是如此。为什么?我做错了吗?
答案 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