我在运行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相关的问题。
答案 0 :(得分:3)
docker exec -it
...要求它在具有TTY可用的上下文中运行。如果您可以避免在程序执行后期需要stdin或终端(例如,在容器中配置/etc/sudoers
配置为禁用RequireTTY
选项,你应该能够简单地删除-it
标志。