通过 websocket 附加 docker 容器的 stdin

Attach stdin of docker container via websocket

提问人:Thyrel 提问时间:3/21/2015 最后编辑:Thyrel 更新时间:3/21/2015 访问量:2049

问:

我正在使用 chrome websocket 客户端扩展附加到正在运行的容器,调用 Docker 远程 API,如下所示:

ws://localhost:2375/containers/34968f0c952b/attach/ws?stream=1&stdout=1

容器从我的机器本地启动,在映像中执行一个等待用户输入的 jar。基本上,我想从 Web 浏览器中的输入字段提供此输入。

虽然我能够使用 API 端点进行附加,但我遇到了一些问题 - 可能是由于我对 ws 端点的理解不足以及糟糕的文档 - 我想解决这些问题:

1) 使用 chrome websocket 客户端扩展发送数据时,根据网络检查工具,帧似乎是通过 websocket 传输的。但是,在等待输入的容器中运行的进程仅在 websocket 连接关闭时接收发送的数据 - 一次全部接收。这是标准行为吗?直观地说,您会期望输入立即发送到进程。

2)如果我同时附加到stdin和stdout,docker deamon会卡住等待stdin附加,导致无法看到任何输出:

[debug] attach.go:22 attach: stdin: begin
[debug] attach.go:59 attach: stdout: begin
[debug] attach.go:143 attach: waiting for job 1/2
[debug] server.go:2312 Closing buffered stdin pipe
[error] server.go:844 Error attaching websocket: use of closed network connection

我已经解决了 stdin 和 stdout 的两个单独连接,这有效,但真的很烦人。对此有什么想法吗?

提前致谢!

API 输入 websocket docker

评论

0赞 btwiuse 7/26/2022
您能否提供代码示例,以便我们为您提供建议?

答: 暂无答案