lak*_*tak 5 pipe stdout stderr docker
我可以获得单独的 stdout 和 stderr 管道吗docker run
?
例子:
$ docker run --rm -it alpine sh -c 'echo this is stdout; echo this is stderr >&2' \
2> stderr.txt
this is stdout
this is stderr
$ cat stderr.txt
Run Code Online (Sandbox Code Playgroud)
我期望什么:
$ sh -c 'echo this is stdout; echo this is stderr >&2' 2> stderr.txt
this is stdout
$ cat stderr.txt
this is stderr
Run Code Online (Sandbox Code Playgroud)
小智 10
您的问题是“-t”选项。删除它后,stderr 应该按预期工作:
$ docker run -i --rm alpine sh -c 'echo this is stdout; echo this is stderr >&2' 2>stderr
this is stdout
$ cat stderr
this is stderr
Run Code Online (Sandbox Code Playgroud)
当您使用“-t”(或--tty)选项时,stdout 和 stderr 将连接在一起。这在 docker 中没有明确记录,因为“这是 tty 的正常行为”。[来源:moby问题25542,评论238647584 by bamarni ]