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