当前位置: 首页 > 知识库问答 >
问题:

错误“输入设备不是TTY”

冉锋
2023-03-14

我正在从我的jenkinsfile运行以下命令。然而,我得到错误“输入设备不是一个TTY”。

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

有没有一种方法可以从jenkinsfile运行脚本,而不用做交互模式?

我基本上有一个名为script.sh的文件,我希望在Docker容器中运行该文件。

共有1个答案

班浩皛
2023-03-14

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

或者,如果输入不是来自TTY的docker命令,则可以将其更改为-i。如果在命令行中有类似xyz docker...docker... 的内容,请执行以下操作。

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

或者,如果您需要一个交互式终端,而不是在Linux或MacOS上的终端中运行,则使用不同的命令行界面。据报告,PowerShell在Windows上包含此支持。

什么是TTY?它是一个终端接口,支持转义序列,移动光标,等等,这些都来自于旧的连接到大型机的哑终端。现在,它由Linux命令终端和ssh接口提供。更多详情请参阅维基百科文章。

要了解使用和不使用TTY运行容器的区别,请运行一个不使用TTY的容器:Docker run--rm-i ubuntu bash。在该容器中,使用apt-get update安装vim;apt-get安装vim。请注意缺少提示。对文件运行vim时,尝试在文件内移动光标。

 类似资料:
  • 我正在从我的运行以下命令。但是,我得到错误“输入设备不是TTY”。 是否有一种方法可以在不执行交互模式的情况下从运行脚本? 我基本上有一个名为我想在Docker容器中运行。

  • 我正在从我的运行以下命令。然而,我得到错误“输入设备不是一个TTY”。 有没有一种方法可以从运行脚本,而不用做交互模式? 我基本上有一个名为的文件,我希望在Docker容器中运行该文件。

  • 我已经在Ubuntu 18.04上注册了一个安装了shell执行器的GitLab运行程序,并使用下面的命令设置了一个docker容器 然后,我尝试从gitlab ci中的执行以下命令,但出现了一个错误。 除了使用docker exec之外,是否有任何关于此问题的线索?我知道,在Gitlab CI环境中工作,但它将在容器中创建一个新会话,这对我来说是不可取的。谢谢

  • 我有一个与Docker和Cypress服务器。docker使用以下命令启动Cypress: docker run-it-v$PWD:/var/www/html/test-w/var/www/html/test-cypress/included:6.5.0 很好,效果很好:) 我尝试通过gitlab ci调用此设置。在gitlab Ci中,我使用SSH连接到服务器,并启动命令:SSHroot@MY_

  • 26 输入设备 FFmpeg中的输入设备配置元素用来启用对附加到您的系统一个多媒体设备访问数据。 当编译时,默认会支持所有的输入设备。你可以通过在配置脚本执行时附加–list-indevs了解到支持的设备。 可以通过–disable-indevs在编译时禁用所有输入设备,也可以在此基础上通过–enable-indev=INDEV允许个别设备,或者在默认支持基础上通过–disable-indev=I

  • 输入设备不是TTY。如果您使用的是mintty,请尝试在命令前加'winpty' 这里该用什么?我正在用Mingw64运行Windows8。