docker exec -it返回"无法在非tty输入上启用tty模式"

use*_*095 58 centos docker

docker exec -it 命令返回以下错误"无法在非tty输入上启用tty模式"

level="fatal" msg="cannot enable tty mode on non tty input" 
Run Code Online (Sandbox Code Playgroud)

我在centos box 6.6上运行docker(1.4.1).我试图执行以下命令, docker exec -it containerName /bin/bash 但我收到以下错误

level="fatal" msg="cannot enable tty mode on non tty input" 
Run Code Online (Sandbox Code Playgroud)

Sté*_*ert 82

运行docker exec -i而不是docker exec -it修复我的问题.实际上,我的脚本是由CRONTAB发起的,它不是终端.

提醒一句:

Usage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

Run a command in a running container

  -i, --interactive=false    Keep STDIN open even if not attached  
  -t, --tty=false            Allocate a pseudo-TTY
Run Code Online (Sandbox Code Playgroud)


Sen*_*hil 14

如果您在Windows docker客户端中收到此错误,则可能需要使用run命令,如下所示

$ winpty docker run -it ubuntu /bin/bash


小智 9

只需使用"-i"

docker exec -i [your-ps] [command]


alv*_*inc 7

如果你在Windows上使用docker-machine而你正在使用GIT Bash或Cygwin,要"进入"正在运行的容器,你需要执行以下操作:

docker-machine ssh default ssh到虚拟机(Virtualbox最有可能)

docker exec -it <container> bash 进入容器.

编辑:

我最近发现,如果你使用Windows PowerShell,你可以直接将docker exec放入容器中,使用Cygwin或Git Bash可以使用winpty docker exec -it <container> bash并跳过docker-machine ssh上面的步骤.


rao*_*997 5

对于带有boot2docker的Windows上的以下命令,我得到"无法在非tty输入上启用tty模式"

docker exec -it <containerIdOrName> bash
Run Code Online (Sandbox Code Playgroud)

下面的命令修复了问题

winpty docker exec -it <containerIdOrName> bash
Run Code Online (Sandbox Code Playgroud)


And*_*ndy 4

docker exec在已经运行的容器中运行新命令。这不是启动新容器的方法——用于docker run此目的。

这可能是“非 tty 输入”错误的原因。或者它可能是你运行 docker 的地方。它是真正的终端吗?也就是说,完整的 tty 会话是否可用?您可能想检查您是否正在与以下人员进行交互会话

[[ $- == *i* ]] && echo 'Interactive' || echo 'Not interactive'
Run Code Online (Sandbox Code Playgroud)

来自https://unix.stackexchange.com/questions/26676/how-to-check-if-a-shell-is-login-interactive-batch