解释并删除docker exec响应

时间:2017-09-28 20:56:12

标签: go

我正在运行docker api函数:

func (cli *Client) ContainerExecAttach(ctx context.Context, execID string, config types.ExecConfig) (types.HijackedResponse, error)

当我使用内置的bufio阅读器阅读回复时:

line, _, err := resp.Reader.ReadLine()

我没有得到任何错误但是如果我尝试将字节转换为字符串应用程序崩溃 - 有问题的应用程序是一个Windows服务,我想因为这个我努力从中获取错误

我现在设法使用(记录到事件查看器)查看输出:

logger.Infof("res: %q", line)

这个输出是:

  

RES:   " \ X01 \ X00 \ X00 \ X00 \ X00 \ X00 \ x00X {\"更新\":假,\"扫描\":假,\&# 34;进度\":0,\"发现\":假,\"注册\":假}"

现在,我期待json,但是时髦的前缀是最不受欢迎的,不知道这些字节是什么以及为什么它们在那里?我希望这会告诉我下一个问题;什么是最干净的方式来删除它们或不首先接收它们?

我目前正在修剪固定长度的字节,但我想我需要做一些更复杂的事情。我想左边修剪这些字节:\x01 \x00但不确定我是否应该期待其他人

1 个答案:

答案 0 :(得分:4)

您收到的HTTP响应是Docker流格式,如文档here所述。

您应该考虑使用github.com/docker/docker/pkg/stdcopy.StdCopy函数将流解复用到stdout / stderr。