After i run this
$ docker run --rm -v "/c/users/vipul rao/documents/github/wappalyzer:/opt/wappalyzer" -it wappalyzer/dev
I am getting the following error the input device is not a TTY. If you are using mintty, try prefixing the command with 'winpty'
What should i use here i am running on windows 8 in MINGW64.
答案 0 :(得分:25)
根据您获得的错误消息的建议,您应该尝试使用winpty(默认情况下使用Git-Bash安装),然后运行:
winpty docker run --rm -v "/c/users/vipul rao/documents/github/wappalyzer:/opt/wappalyzer" -it wappalyzer/dev
如果这样做,您可能需要设置Bash别名以避免一直手动前置winpty
:
echo "alias docker='winpty docker'" >> ~/.bashrc
或
echo "alias docker='winpty docker'" >> ~/.bash_profile
答案 1 :(得分:5)
在Windows上使用bash终端运行-it
选项时会出现此问题。您可以使用Powershell解决此问题。
答案 2 :(得分:4)
您是否启动了“ Docker Quickstart Terminal”?我正在尝试
$ docker run -i -t redcricket/react-tutorial:latest /bin/bash
在Cygwin bash外壳的Windows上出现相同的错误:
the input device is not a TTY. If you are using mintty, try prefixing the command with 'winpty'
然后,我记得在Windows 10系统上安装docker时安装了一个名为“ Docker Quickstart Terminal”的东西。您需要首先从任务栏上的“输入此处以搜索”这个愚蠢的窗口开始:
这启动了这个……
…您可以在其中运行docker命令而不会出现该错误或运行winpty。
答案 3 :(得分:3)
这对我有用。 我在Windows上使用git bash
winpty docker-compose exec app ls -l
答案 4 :(得分:3)
如果您使用的是Git Bash,可以尝试这样
winpty docker run -it ubuntu
答案 5 :(得分:2)
请勿使用alias docker="winpty docker"
。它可以解决您的问题,但会中断管道。
$ winpty docker run -ti ubuntu
root@e85cff7d1670:/# exit
$ wintpy docker run ubuntu bash HELLO
HELLO
$ wintpy docker run ubuntu bash HELLO | cat
stdout is not a tty
将此复制到您的.bashrc。仅当使用winpty docker
时,此脚本才使用-ti
。
function docker(){
for param; do if [[ "$param" == "-ti" ]] || [[ "$param" == "-it" ]]; then
winpty docker "$@"; return
fi; done;
command docker "$@"
}
docker run -ti ubuntu
变成winpty docker run -ti ubuntu
避免了error: the input device is not a TTY. If you are using mintty, try prefixing the command with 'winpty'"
docker run ubuntu echo "what's up" | cat
变成command docker run echo "what'up" | cat
避免了error: stdout is not a tty
该脚本仅查看是否有一个'-it'参数,而不检查它是否在'docker run'语句中...但是它可以解决我的问题。
答案 6 :(得分:1)
从命令中删除-it
。如果您想保持互动,请保留-i
答案 7 :(得分:1)
只需在cmd开头添加“ winpty”,请尝试以下操作:
$ winpty docker.exe run --rm -v "/c/users/vipul rao/documents/github/wappalyzer:/opt/wappalyzer" -it wappalyzer/dev
为什么会这样?此处有更多详细信息: http://willi.am/blog/2016/08/08/docker-for-windows-interactive-sessions-in-mintty-git-bash/
答案 8 :(得分:0)
对于那些使用WSL并在cmder或conmumu内部的Windows上运行Docker的人,我建议不要使用Windows上“ Program Files”中安装的Docker,而应在ubuntu / linux的WSL中安装Docker。请记住,尽管您不能在WSL中运行Docker本身,但必须从WSL中安装的Linux Docker客户端连接到Windows上运行的Docker。
要在WSL上安装Docker
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt-get update
sudo apt-get install docker-ce
您可以使用以下命令来运行实际的Docker命令: 使用-H
开关连接到Docker docker -H localhost:2375 run -it -v /mnt/c/code:/var/app -w "/var/app" centos:7
或设置环境变量docker_host
export DOCKER_HOST=tcp://localhost:2375
无论哪种方式,您现在都可以以交互方式连接到正在运行的Docker容器
答案 9 :(得分:0)
除了上述解决方案。 如果您收到有关docker attach的错误
示例:docker attach alpine1
错误:the input device is not a TTY. If you are using mintty, try prefixing the command with 'winpty'
解决方案:在docker命令之前添加winpty应该可以工作。
示例:winpty docker attach alpine1
注意::在Windows上使用时遇到此错误,此解决方案对我有用。
答案 10 :(得分:0)
由于运行docker-compose exec workspace bash
因此只需在winpty winpty docker-compose exec workspace bash
前面加上
答案 11 :(得分:0)
问题出在gitbash上,但是使用powershell可以正常工作..
答案 12 :(得分:0)
您可以尝试使用Cmder工具,它将起作用。它不适用于Gitbash
答案 13 :(得分:0)
尝试运行docker-compose exec
命令时,我遇到了相同的错误。
在帮助文档docker-compose exec --help
中,它显示了如何通过以下方式将-T
添加到命令选项中来禁用伪tty分配:
docker-compose exec -T
来自帮助文档:
-T Disable pseudo-tty allocation. By default docker-compose exec allocates a TTY.
答案 14 :(得分:0)
可能是您没有在Docker终端中运行命令。否则,您可能无法正确连接到Docker守护程序,并且将无法正确交互。
确保您在实际的Docker Terminal中运行命令。
答案 15 :(得分:0)
发生在我身上。在Windows 8上从Git Bash运行Docker Toolbox。有两件事正在发生。从git bash看来,我们似乎没有对docker daemon的完整升级权限(即使我以管理权限运行git bash)。 因此:
尝试从docker终端运行命令。 (赋予您特权)。
要补偿Window文件夹命名格式中的错误,请不要忘记引用路径。(以转义空格和/或大写错误表示)
发件人:
docker run -v $(pwd):/data image_ref
收件人:
docker run -v "$(pwd):/data" image_ref
(请注意$(pwd):/data
后面的引号)。
答案 16 :(得分:-1)
如果您使用的是gitbash,则问题在于将终端仿真器设置为与Git bash一起使用。setting the emurator
相反,您可以将仿真器更改为第一个选项或使用
在docker run命令之前使用winpty命令