HauptanliegenWann und wenn nicht tty verwenden in Docker Remote API
- Ich benutze
curl
meine Anfragen auszuführen. Das Ausführen der Anfragen mit Postboten scheint nicht viel Unterschied zwischen TTY aktiviert oder deaktiviert zu zeigen. - Stderr zeigt mit TTY aktiviert, aber nicht mit TTY deaktiviert. AttachStderr wird für beide auf "True" gesetzt (mit
curl
). - Stdout ist 'unvollständig' mit TTY aktiviert (mit
curl
).
=========================================
Ich habe Mühe, herauszufinden, wann ein Pseudo-Tty mit Docker Remote API zugewiesen werden soll und wann nicht. Die Ausgabe ist sehr unterschiedlich (abhängig davon, ob es Fehler gab und andere Dinge, die ich nicht ganz verstehe).
Ich benutze curl, um meine Anfragen auszuführen.
Beispiel:
Kein TTY:
# ls on a container
curl --unix-socket /var/run/docker.sock -s -H "Content-Type: application/json" -X POST -d '{"AttachStdin": false, "AttachStdout": true, "AttachStderr": true, "Tty": false, "Cmd": [ "ls" ] }' http:/containers/mycontainer/exec
curl --unix-socket /var/run/docker.sock -s -H "Content-Type: application/json" -X POST -d '{"Detach": false, "Tty": true }' http:/exec/5b2a3882e04432180806deffd7d9417d9f75b439022bce16211c296beb158319/start
Diese Ausgänge: bin boot dev etc exports home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
Gleiche Befehle mit Tty: true
Ausgang boot etc home lib64 mnt proc run srv tmp varsr
Allerdings, wenn ich versuche, etwas zu tun, die eine schafft Fehler:
Kein TTY:
# ls /non/existant/path
curl --unix-socket /var/run/docker.sock -s -H "Content-Type: application/json" -X POST -d '{"AttachStdin": false, "AttachStdout": true, "AttachStderr": true, "Tty": false, "Cmd": [ "ls", "/non/existant/path" ] }' http:/containers/mycontainer/exec
curl --unix-socket /var/run/docker.sock -s -H "Content-Type: application/json" -X POST -d '{"Detach": false, "Tty": true }' http:/exec/11d9bff545d99e64bc1c82b540966e2cceaa48c98fbde851378cdb5de9cae663/start
Ohne TTY, ich sehe keinen Ausgang.
Mit TTY: ls: cannot access '/non/existant/path': No such file or directory
Was ist los?
Vielen Dank.
Hatten Sie nicht gedacht, dass stdout/stderr anders behandelt werden? Versuchen Sie 'ls path/that/exists /> & 2' ebenfalls auszuführen ... – agg3l
@ agg3l Sie haben recht, wenn ich zu stderr umleite, sehe ich keine Ausgabe mit deaktiviertem tty. Ich dachte jedoch, AttachStderr würde es zeigen. Ich habe auch keine Ahnung, warum tty: true die Ausgabe komisch aussehen lässt. Schließlich habe ich einen anderen Befehl ausgeführt, der kein stderr hatte und leer mit tty: false war. Ich werde es bald schreiben. –
Scheint dies effektiv verschiebt Frage in _ "warum stdout ist verfügbar ohne TTY, während stderr nicht ist (beide sind dort mit TTY)" _...Nicht, dass ich deine Frage sofort beantworten kann. – agg3l