我正在从我的Jenkinsfile运行以下命令。但是,我得到了错误“输入设备不是TTY”
docker run-v$PWD:/foobar-it cloudfoundry/cflinuxfs2/foobar/script.sh
是否有一种方法可以在不执行交互模式的情况下从Jenkinsfile运行脚本
我基本上有一个名为script.sh的文件,我想在Docker容器中运行它
从cli中删除-it,使其非交互式,并删除TTY。如果不需要,例如在Jenkins或cron脚本中运行命令,则应该这样做
或者,如果您的输入通过管道传输到不是来自TTY的docker命令,则可以将其更改为-i。如果您有类似于xyz | docker…或docker&书信电报;在命令行中输入,执行此操作
或者,如果您想要TTY支持,但输入设备上没有TTY支持,则可以将其更改为-t。对于检查TTY以启用日志中输出的颜色格式化的应用程序,或者稍后使用适当的终端连接到容器时,请执行此操作
或者,如果您需要一个交互式终端,并且没有在Linux或MacOS上的终端上运行,请使用不同的命令行界面。据报道,PowerShell在Windows上包含此支持
什么是TTY?它是一个终端接口,支持转义序列、移动光标等,这是从过去连接到大型机的哑终端发展而来的。今天,它由Linux命令终端和ssh接口提供。有关更多详细信息,请参阅维基百科文章
要查看使用TTY和不使用TTY运行容器的区别,请运行不使用TTY的容器:docker run--rm-i ubuntu bash。从该容器内部安装vim,并安装apt-get-update;apt get install vim。注意没有提示。在对文件运行vim时,尝试在文件中移动光标