主要关注
curl运行我的请求。使用postman运行请求似乎在启用TTY和禁用TTY之间没有太大区别。curl)。curl)的情况下,Stdout是“不完全”的。=========================================
我正在努力弄清楚什么时候用Docker分配一个伪tty,什么时候不分配。输出是非常不同的(取决于是否有错误,以及其他我不太理解的东西)。
我用卷发来执行我的请求。
示例:
没有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输出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
到底怎么回事?
谢谢。
发布于 2017-07-11 20:48:34
我会用我目前所知道的一切来回答我自己的问题,以防有人看到这一点。
TTY基本上会使输出在终端中看起来“看上去”。也就是说,如果有多个文件夹(在我的例子中),它们应该显示在两个不同的行中。
我仍然不知道为什么不能看到禁用TTY的stderr,但这就是我无法看到启用TTY的完整stdout的原因。
https://stackoverflow.com/questions/40315504
复制相似问题