我正在运行 docker api 函数:
当我使用内置的 bufio 阅读器读取响应时:
line, _, err := resp.Reader.ReadLine()
我没有收到任何错误,但如果我尝试将字节转换为字符串,应用程序就会崩溃 - 有问题的应用程序是一个 Windows 服务,我认为正因为如此,我正在努力从中找出错误。
我现在已经设法使用(记录到事件查看器)查看输出:
logger.Infof("res: %q", line)
输出结果是:
res: "\x01\x00\x00\x00\x00\x00\x00X{\"updating\":false,\"scanning\":false,\"progress\":0,\"discovering\":false,\"registered\":false}"
现在,我期待 json,但 funky 前缀是最不受欢迎的,知道这些字节是什么以及它们为什么存在吗?我希望这会告诉我的下一个问题;删除它们或首先不接收它们的最干净的方法是什么?
我目前正在按固定长度修剪字节,但我认为我需要做一些更复杂的事情。我正在考虑向左修剪这些字节:\x01
\x00
但不确定我是否应该期待任何其他字节
最佳答案
您返回的 HTTP 响应是记录在案的 Docker 流格式 here .
您应该考虑使用 github.com/docker/docker/pkg/stdcopy.StdCopy
将流多路分解为 stdout/stderr 的函数。
关于go - 在 docker exec 响应开始时解释并删除无用的字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46478169/