stdin与詹金斯并不是一个小问题

时间:2017-11-06 18:59:33

标签: docker jenkins

我在运行Windows 10的笔记本电脑上本地安装了Jenkins。我启动了一个运行SQL Server的Linux容器,但是当我尝试运行以下内容时:

 winpty docker exec -it SQLLinuxnull sudo /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P P@ssword1 -Q 'EXEC sp_configure '\''clr enabled'\'', 1;'

我明白了:

stdin is not a tty

当我从PowerShell会话运行docker exec命令时,它完成没有任何问题。拖网这个网站得出的回答表明这可能与Linux容器中使用的任何帐户有关,需要能够执行sudo并且我应该更改/etc/sudoers文件,问题在于我做的没有/etc/sudoers文件,根据uname -a这是容器所基于的Linux版本(不是它的基础是Linux映像中的官方Microsoft SQL服务器):

# uname -a
Linux f9509a952eae 4.9.49-moby #1 SMP Wed Sep 27 00:36:29 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux

有人可以确认这是与sudoers相关的问题。

1 个答案:

答案 0 :(得分:3)

docker exec -it

...要求它在具有TTY可用的上下文中运行。如果您可以避免在程序执行后期需要stdin或终端(例如,在容器中配置/etc/sudoers 配置为禁用RequireTTY选项,你应该能够简单地删除-it标志。