何时何地不在Docker Remote API中使用tty

主要关注

  • 我使用curl来运行我的请求。 运行邮递员的请求似乎没有显示太多的TTY启用或禁用的区别。
  • Stderr显示启用TTY,但不会禁用TTY。 AttachStderr被设置为true(使用curl )。
  • 当启用TTY(使用curl )时,Stdout是“不完整的”。

=========================================

我努力想弄清楚什么时候用Docker Remote API分配一个伪tty,什么时候不用。 输出是非常不同的(取决于是否有错误,其他的东西我不太明白)。

我正在使用curl来执行我的请求。

例:

否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 

这个输出: bin boot dev etc exports home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var

Tty: true相同的命令Tty: true输出boot etc home lib64 mnt proc run srv tmp varsr

但是,如果我尝试做一些产生错误的事情:

否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 

没有TTY,我没有看到任何输出。

TTY: ls: cannot access '/non/existant/path': No such file or directory

这是怎么回事?

谢谢。

我会用我目前知道的一切来回答自己的问题,以防有人看到这个。

TTY基本上会使输出看起来像一个terminal。 也就是说,如果有多个文件夹(在我的情况下),他们应该显示在两个不同的行。

我仍然不知道为什么我看不到TTY禁用的stderr,但这是我无法看到启用TTY的完整stdout的原因。