Docker 不显示 /dev/stdout 中写入的日志

Osc*_*lli 1 docker docker-compose

我启动了一些 docker 容器:

docker-compose up -d
Run Code Online (Sandbox Code Playgroud)

(这里是docker-compose.yml

进而:

docker-compose logs -f web
Run Code Online (Sandbox Code Playgroud)

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

docker-compose exec web echo "hello" >> /dev/stdout
Run Code Online (Sandbox Code Playgroud)

实时日志屏幕中没有显示任何内容。对于任何其他容器都相同。为什么?难道我做错了什么?

boy*_*all 5

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

更新:另请注意:

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