「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]

おすすめ記事