Pipe為
為docker run
分離stdout和stderr?
我可以獲得單獨的 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
我的期望:
$ sh -c 'echo this is stdout; echo this is stderr >&2' 2> stderr.txt this is stdout $ cat stderr.txt this is stderr
你的問題是’-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
當您使用“-t”(或 –tty)選項時,stdout 和 stderr 會連接在一起。這在 docker 中沒有明確記錄,因為“這是 tty 的正常行為”。[來源:moby issue 25542,評論 238647584 by bamarni ]