主な懸念事項
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: cannot access '/non/existant/path': No such file or directory
どうしたの?
ありがとうございました。