Ошибка докера: устройство ввода не TTY. Если вы используете mintty, попробуйте добавить префикс команды к winpty

После того, как я запускаю это
$ docker run --rm -v "/c/users/vipul rao/documents/github/wappalyzer:/opt/wappalyzer" -it wappalyzer/dev

Я получаю следующую ошибку the input device is not a TTY. If you are using mintty, try prefixing the command with 'winpty'Что я должен использовать здесь, я бегу на Windows 8 в MINGW64.

6 ответов

Как следует из полученного сообщения об ошибке, вы должны попытаться использовать 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

Если вы используете Git Bash, вы можете попробовать вот так

winpty docker run -it ubuntu

Эта проблема возникает при запуске с -it возможность использования терминала bash на windows. Вы можете использовать Powershell для решения этой проблемы.

У меня это работает. Я использую git bash в Windows

winpty docker-compose exec app ls -l

Удалить -it из команды. Если вы хотите, чтобы он был интерактивным, то продолжайте -i

Не использовать 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'... но он помогает мне.

Проблема с gitbash, однако с PowerShell он работает нормально.

Вы запустили "Docker Quickstart Terminal"? Я пытался бежать

$ docker run -i -t redcricket/react-tutorial:latest /bin/bash

на Windows из оболочки Cygwin Bash и получил ту же ошибку:

the input device is not a TTY.  If you are using mintty, try prefixing the command with 'winpty'

Затем я вспомнил, что, когда я установил Docker в моей системе Windows 10, было установлено что-то под названием "Docker Quickstart Terminal". Вы должны начать это сначала с этого тупого окна "Напечатайте здесь, чтобы искать" вещь на панели задач:

Это запускает это...

… Вы можете запускать там свои команды docker без этой ошибки или запуска winpty.

Просто добавьте winpty в начало вашего cmd, попробуйте ниже:

$ 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/

Со мной случилось. Из Git Bash в Windows 8 под управлением Docker Toolbox. Происходят две вещи. Из git bash у нас, похоже, нет полной эскалации привилегий демону docker (хотя я запускаю git bash с правами администратора). Таким образом:

  1. Попробуйте запустить команду из своего докер-терминала. (дает вам привилегию).

  2. Чтобы компенсировать ошибки форматов именования папок Windows, не забудьте указать путь в кавычки.. (чтобы избежать пробелов и / или ошибок заглавной буквы), скажите

Из:

docker run -v $(pwd):/data image_ref

Кому:

docker run -v "$(pwd):/data" image_ref

(обратите внимание на заключительные кавычки вокруг $(pwd):/data).

Получил эту ошибку для запуска docker-compose exec workspace bash

Так что просто префикс с winpty winpty docker-compose exec workspace bash

Возможно, вы не запускаете команды в терминале Docker. Если вы этого не сделаете, возможно, вы неправильно подключены к демону Docker и не сможете правильно взаимодействовать.

Убедитесь, что вы выполняете команды в реальном Docker Terminal.

Для тех, кто использует WSL и запускает Docker для окон внутри cmder или conemu, я бы рекомендовал не использовать Docker, который установлен на окнах в "Program Files", а вместо этого установить Docker внутри WSL на ubuntu/linux. Помните, однако, что вы не можете запустить сам Docker из WSL, вы должны подключиться к Docker, работающему в Windows, из клиента Linux Docker, установленного в WSL.

Чтобы установить Docker на WSL

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: Подключитесь к Docker с помощью ключа -H

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.

У меня была такая же ошибка при попытке запустить docker-compose execкоманда. В справочной документацииdocker-compose exec --help он показывает, как вы можете отключить выделение псевдо-tty, добавив -T в параметры вашей команды следующим образом:

docker-compose exec-T

Из справочной документации:

-T Disable pseudo-tty allocation. By default docker-compose exec allocates a TTY.

В дополнение к вышеупомянутым решениям. В случае, если вы получаете эту ошибку для присоединения докера

пример: docker attach alpine1

ошибка: the input device is not a TTY. If you are using mintty, try prefixing the command with 'winpty'

Решение: добавление winpty перед командой docker, т.е. winpty docker attach, должно работать.

пример: winpty docker attach alpine1

Примечание: я получал эту ошибку при использовании базы на Windows, и это решение работало для меня.

Вы можете попробовать с помощью инструмента Cmder, он будет работать. Это не работает с Gitbash

Если вы используете gitbash, проблема заключается в настройке эмулятора терминала для использования с Git bash. установка эмулятора

Вместо этого вы можете изменить эмулятор на первые параметры или использовать команду
winpty перед командой запуска докера.

Другие вопросы по тегам