"docker run"의 표준 출력과 표준 오류를 분리하시겠습니까?

"docker run"의 표준 출력과 표준 오류를 분리하시겠습니까?

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]

관련 정보