gpt4 book ai didi

linux - 何时以及何时不在 Docker Remote API 中使用 tty

转载 作者:太空狗 更新时间:2023-10-29 12:41:45 24 4
gpt4 key购买 nike

主要问题

  • 我使用 curl 来运行我的请求。使用 postman 运行请求似乎没有显示 TTY 启用或禁用之间的太大差异。
  • Stderr 显示启用了 TTY,但不显示禁用了 TTY。两者的 AttachStderr 均设置为 true(使用 curl)。
  • 标准输出在启用 TTY 的情况下“不完整”(使用 curl)。

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

我正在努力弄清楚何时使用 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 输出相同的命令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:无法访问“/non/existant/path”:没有这样的文件或目录

这是怎么回事?

谢谢。

最佳答案

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

TTY 基本上会使输出看起来像在终端中一样。也就是说,如果有多个文件夹(在我的例子中),它们应该显示在不同的两行中。

我仍然不知道为什么在禁用 TTY 的情况下看不到 stderr,但这就是我在启用 TTY 的情况下看不到完整标准输出的原因。

关于linux - 何时以及何时不在 Docker Remote API 中使用 tty,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40315504/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com