Я использую Docker-клиент. Версия: 18.09.2.
Когда я запускаю контейнер в интерактивном режиме и запускаю команду date
, затем направляю его вывод в hexdump
для проверки, явидя конечный \n
, как и ожидалось:
$ docker run --rm -i -t alpine
/ # date | hexdump -c
0000000 T h u M a r 7 0 0 : 1 5
0000010 : 0 6 U T C 2 0 1 9 \n
000001d
Однако, когда я передаю команду date
в качестве точки входа напрямую и запускаю контейнер, я получаю \r
\n
каждый раз, когда естьНовая строка в выводе.
$ docker run --rm -i -t --entrypoint=date alpine | hexdump -c
0000000 T h u M a r 7 0 0 : 1 6
0000010 : 1 9 U T C 2 0 1 9 \r \n
000001e
Это странно.
Когда я опускаю -t
(без выделения TTY), этого совершенно не происходит:
docker run --rm -i --entrypoint=date alpine | hexdump -c
0000000 T h u M a r 7 0 0 : 1 7
0000010 : 3 0 U T C 2 0 1 9 \n
000001d
Что здесь происходит?
Это звучит опасно, так как я использую команду docker run
в своих скриптах, и если я забуду пропустить -t
в моих скриптах, вывод я получу от docker run
команда будет иметь невидимых / не печатаемых \r
символов, которые могут вызвать всевозможные проблемы.