小编典典

错误“输入设备不是 TTY”

all

我正在从我的Jenkinsfile. 但是,我收到错误 “输入设备不是 TTY”

docker run -v $PWD:/foobar -it cloudfoundry/cflinuxfs2 /foobar/script.sh

有没有办法在Jenkinsfile不执行交互模式的情况下运行脚本?

我基本上有一个文件script.sh,我想在 Docker 容器中运行它。


阅读 106

收藏
2022-03-03

共1个答案

小编典典

从您的 cli 中删除-it以使其非交互并删除 TTY。如果您不需要,例如在 Jenkins 或 cron 脚本中运行您的命令,您应该这样做。

或者,您可以将其更改为-i如果您已将输入通过管道传输到并非来自 TTY 的 docker 命令中。如果您有类似的东西xyz | docker ...docker ... <input在您的命令行中,请执行此操作。

或者,-t如果您想要 TTY 支持但输入设备上没有它,您可以将其更改为。对检查 TTY
以启用日志中输出颜色格式的应用程序执行此操作,或者当您稍后使用适当的终端附加到容器时执行此操作。

或者,如果您需要交互式终端并且不在 Linux 或 MacOS 上的终端中运行,请使用不同的命令行界面。据报道 PowerShell 在 Windows
上包含此支持。


什么是 TTY?它是一个支持转义序列、移动光标等的终端界面,它来自于连接到大型机的愚蠢终端的旧时代。今天它由 Linux 命令终端和 ssh
接口提供。有关更多详细信息,请参阅维基百科文章

要查看使用和不使用 TTY 运行容器的区别,请在没有 TTY 的情况下运行容器:docker run --rm -i ubuntu bash.
从该容器内部,使用apt-get update; apt-get install vim. 请注意缺少提示。对文件运行 vim
时,尝试在文件中移动光标。

2022-03-03