我正在从我的Jenkinsfile
运行以下命令。但是,我得到错误“输入设备不是TTY”。
docker run -v $PWD:/foobar -it cloudfoundry/cflinuxfs2 /foobar/script.sh
是否有一种方法可以在不执行交互模式的情况下从Jenkinsfile
运行脚本?
我基本上有一个名为script的文件。sh
我想在Docker容器中运行。
对于那些在Windows上处理此错误和git bash的用户,只需使用PowerShell,它就可以完美地工作。
(如BMitch所述)
这不完全是你所要求的,但对其他人也很有用:
-T键将帮助使用docker-comment exec的人!(它禁用伪tty分配)
例如:
docker-compose -f /srv/backend_bigdata/local.yml exec -T postgres backup
或
docker-compose exec -T mysql mysql -uuser_name -ppassword database_name < dir/to/db_backup.sql
从cli中删除-it
,使其非交互式,并删除TTY。如果不需要,例如在Jenkins或cron脚本中运行命令,则应该这样做。
或者,如果您的输入通过管道传输到不是来自TTY的docker命令,则可以将其更改为-i
。如果你有类似于xyz | docker的东西
或
码头工人。。。
或者,如果您想要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时,尝试在文件中移动光标。
问题内容: 我正在从中运行以下命令。但是,出现错误 “输入设备不是TTY” 。 有没有一种方法可以在不进行交互模式的情况下从中运行脚本? 我基本上有一个名为的文件,希望在Docker容器中运行。 问题答案: 从cli中删除使其不具有交互性,并删除TTY。如果不需要,例如在Jenkins或cron脚本中运行命令,则应这样做。 或者,您也可以将其更改为输入到不是来自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。