stdin不是Jenkins的tty
我有我的笔记本电脑上运行Windows 10本地安装Jenkins。我旋转了一个运行SQL Server的Linux容器,但是当我尝试运行以下:
winpty docker exec -it SQLLinuxnull sudo /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -PP@ssword1 -Q 'EXEC sp_configure '\''clr enabled'\'', 1;'
我得到:
stdin is not a tty
当我从PowerShell会话运行docker exec
命令时,它完成没有任何问题。 Trawling这个网站提出了一个答案,提示这可能与Linux容器中需要执行sudo的任何帐户有关,而且我应该修改/etc/sudoers
文件,问题是我没有根据uname -a
有一个/etc/sudoers
文件uname -a
这是容器基于Linux的版本(不是它的基础是Linux映像中的官方微软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相关的问题。
docker exec -it
…要求它在TTY可用的上下文中运行。 如果你可以在程序执行后期避免需要stdin或terminal(例如,在禁用了RequireTTY
选项的容器中configuration了/etc/sudoers
),你应该能够简单地删除-it
标志。