Разделить stdout и stderr для `docker run`?
Oct 27 2020
Могу ли я получить отдельные каналы 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
Ответы
2 rosaroteelfe Oct 27 2020 at 19:42
Проблема для вас - опция -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 объединяются. Это явно не задокументировано в докере, потому что «Это нормальное поведение терминала». [Источник: номер Moby 25542, комментарий 238647584 от bamarni ]