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)
如果你在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上面的步骤.
对于带有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)
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
| 归档时间: |
|
| 查看次数: |
42997 次 |
| 最近记录: |