Docker
沒有 tty 腳本不執行命令
我正在嘗試
script
用作 docker 容器的入口點,以將該容器中發生的所有內容記錄到已安裝卷上的文件中。如果有 tty,它會很好用:$ docker run -t --rm --privileged -v $PWD:/log rhel7:7.7 /usr/bin/script /log/out.script --timing=/log/out.timing -f -e -c 'echo "hello world"; sleep 10; echo "goodbye world"' Last login: Tue Jan 21 00:45:14 UTC 2020 on pts/41 Script started, file is /log/out.script hello world goodbye world Script done, file is /log/out.script
但是,如果我刪除 TTY,腳本不會執行任何“-c”命令:
$ docker run --rm --privileged -v $PWD:/log rhel7:7.7 /usr/bin/script /log/out.script --timing=/log/out.timing -f -e -c 'echo "hello world"; sleep 10; echo "goodbye world"' Last login: Tue Jan 21 00:50:39 UTC 2020 on pts/41 Script started, file is /log/out.script Script done, file is /log/out.script $ ls -s out.* 0 out.script 0 out.timing
不幸的是,我計劃執行的環境沒有容器的 TTY。腳本以這種方式表現的原因是什麼?有辦法解決嗎?
該
script
命令旨在擷取終端輸出。沒有終端,它就無法工作。您可能想查看
tee
命令:foo 2>&1 | tee /my/output
將輸出發送
foo
到標準 docker 輸出並將其複製到指定文件。