Docker不会显示用/ dev / stdout写的日志
我开始了一些docker集装箱:
docker-compose up -d
(这里是docker-compose.yml )
接着:
docker-compose logs -f web
但如果我写在另一个shell上:
docker-compose exec web echo "hello" >> /dev/stdout
实时日志屏幕中没有显示任何内容。 相同的任何其他容器。 为什么? 难道我做错了什么?
/dev/stdout
对于每个进程都是不同的。 您的docker-compose logs
将只显示您的PID 1进程的输出,而不是在该容器名称空间中运行的其他进程。
更新:还请注意:
-
>> /dev/stdout
将应用于docker compose exec web echo "hello"
在主机上docker compose exec web echo "hello"
..不要在容器中echo "hello"
-
>> /dev/stdout
是一种无操作,因为默认情况下进程将写入标准输出。对于stdout,>>
(append)与>
(redirect)相同,因为没有预先存在的输出可以被覆盖/replace。
解决了这个虚拟主机configuration:
CustomLog /proc/self/fd/1 combined ErrorLog /proc/self/fd/2
所以,为了在docker上显示日志,你可以使用/proc/self/fd/1
和/proc/self/fd/2