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
답변1
문제는 "-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이 연결됩니다. 이는 "tty의 정상적인 동작입니다"라고 docker에 명시적으로 문서화되어 있지 않습니다. [원천:moby 질문 25542, bamarni의 댓글 238647584]