it-swarm.com.de

docker exec -it gibt "tty-Modus bei Nicht-tty-Eingabe nicht aktivieren" zurück

docker exec -it-Befehl gibt folgenden Fehler zurück: "tty-Modus kann bei Nicht-tty-Eingabe nicht aktiviert werden"

level="fatal" msg="cannot enable tty mode on non tty input" 

Ich verwende docker (1.4.1) auf Centos Box 6.6. Ich versuche den folgenden Befehl auszuführen docker exec -it containerName /bin/bash aber ich erhalte folgenden Fehler

level="fatal" msg="cannot enable tty mode on non tty input" 
58
user2118095

Laufen docker exec -i anstatt docker exec -it mein Problem behoben. Tatsächlich wurde mein Skript von CRONTAB gestartet, das kein Terminal ist.

Als eine Erinnerung:

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
82

Wenn diese Fehlermeldung in Windows Docker-Client angezeigt wird, müssen Sie möglicherweise den folgenden Befehl ausführen

$ winpty docker run -it ubuntu /bin/bash

14
Senthil

benutze einfach "-i"

docker exec -i [dein-ps] [Befehl]

9
Mr.Thanks

Wenn Sie unter Windows arbeiten und docker-machine verwenden und GIT Bash oder Cygwin verwenden, müssen Sie folgende Schritte ausführen, um in einen laufenden Container "einzudringen":

docker-machine ssh default um in die virtuelle Maschine zu sshen (Virtualbox höchstwahrscheinlich)

docker exec -it <container> bash, um in den Container zu gelangen.

BEARBEITEN:

Ich habe kürzlich herausgefunden, dass Sie, wenn Sie Windows PowerShell verwenden, exec direkt in den Container andocken können. Mit Cygwin oder Git Bash können Sie winpty docker exec -it <container> bash und überspringe das docker-machine ssh Schritt oben.

7
alvinc

Ich erhalte für den folgenden Befehl unter Windows mit boot2docker die Meldung "Der tty-Modus kann bei Nicht-tty-Eingaben nicht aktiviert werden"

docker exec -it <containerIdOrName> bash

Der folgende Befehl hat das Problem behoben

winpty docker exec -it <containerIdOrName> bash
5
raok1997

docker exec führt einen neuen Befehl aus in einem bereits laufenden Container . Es ist nicht der Weg, einen neuen Container zu starten - benutze docker run dafür.

Dies kann die Ursache für den Fehler "non tty input" sein. Oder es könnte sein, wo Sie Docker ausführen. Ist es ein echtes Terminal? Ist also eine vollständige Sitzung verfügbar? Möglicherweise möchten Sie überprüfen, ob Sie sich in einer interaktiven Sitzung mit befinden

[[ $- == *i* ]] && echo 'Interactive' || echo 'Not interactive'

von https://unix.stackexchange.com/questions/26676/how-to-check-if-a-Shell-is-login-interactive-batch

4
Andy

Ich habe dieselbe Fehlermeldung in Windows 7 64-Bit mit Mintty erhalten, das mit Git für Windows geliefert wurde. $docker run -i -t ubuntu /bin/bash cannot enable tty mode on non tty input

Ich habe versucht, dem obigen Befehl ein Winpty-Präfix zu voran zu stellen, wie in anderen Antworten vorgeschlagen, aber beim Ausführen wurde mir eine weitere Fehlermeldung angezeigt: $ winpty docker run -i -t ubuntu /bin/bash exec: "D:\\Git\\usr\\bin\\bash": executable file not found in $PATH docker: Error response from daemon: Container command not found or does not exist..

Dann habe ich zufällig den folgenden Befehl ausgeführt, der mir das gab, was ich will: $ winpty docker run -i -t ubuntu bash [email protected]:/# ls bin dev home lib64 mnt proc run srv tmp var boot etc lib media opt root sbin sys usr [email protected]:/#

3
leon

Ich führe docker exec -it unter Jenkins-Jobs aus und erhalte die Fehlermeldung "tty-Modus kann bei Nicht-tty-Eingaben nicht aktiviert werden". Es wird keine Ausgabe an den Docker-Befehl exec zurückgegeben. Meine Job Login Sequenz war:

jenkins Shell -> ssh [email protected]<testdriver> -> ssh [email protected]<sut> -> su - <user> -> docker exec -it <container>

Ich habe eine Änderung vorgenommen, um -T-Flag in der anfänglichen ssh von jenkins zu verwenden. Msgstr "-T - Pseudoterminalzuordnung deaktivieren". Verwenden Sie statt -it das Flag -i mit docker exec. "-i - interaktiv. -t - Pseudotty zuweisen." Dies scheint mein Problem gelöst zu haben.

jenkins Shell -> ssh -T [email protected]<testdriver> -> ssh [email protected]<sut> -> su - <user> -> docker exec -i <container>

Die Art des Verhaltens stimmt mit diesem Docker-Ausführungsfehler überein: https://github.com/docker/docker/issues/8755 . Die Problemumgehung für diese Docker-Fehlerdiskussion schlägt folgende Verwendung vor:

docker exec -it <CONTAINER> script -qc <COMMAND>

Die Verwendung dieser Problemumgehung hat mein Problem nicht gelöst. Es ist jedoch interessant. Probieren Sie diese mit verschiedenen Flags aus und sehen Sie unter verschiedenen ssh-Aufrufen 'not a tty', selbst wenn Sie -t mit docker exec verwenden:

$ docker exec -it <CONTAINER> script -qc 'tty'
/dev/pts/0
$ docker exec -it <CONTAINER> 'tty'            
not a tty
$ docker exec -it <CONTAINER> bash -c 'tty' 
not a tty
0
gaoithe