小编典典

在docker exec响应开始时解释并删除无用的字节

go

我正在运行docker api函数:

func(cli * Client)ContainerExecAttach(ctx
context.Context,execID字符串,配置类型.ExecConfig)(types.HijackedResponse,错误)

当我使用内置的bufio阅读器读取响应时:

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

我没有收到任何错误,但是如果我尝试将字节转换为字符串,则应用程序将崩溃-有问题的应用程序是Windows服务,因此,我认为我正在努力从中获取错误。

我现在设法使用(事件查看器的日志)查看输出:

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

输出是:

res:“ \ x01 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00X
{\”更新\“:false,\”扫描\“:false,\”进度\“:0,\”发现\“:false, \“已注册\”:false}“

现在,我期望使用json,但最不喜欢使用时髦的前缀,您知道这些字节是什么以及为什么它们在那里吗?我希望这能告诉我下一个问题;首先清除或不接收它们的最干净方法是什么?

我目前正以固定长度修整字节,但我认为我需要做一些更复杂的事情。我在想将这些字节修剪掉:\x01 \x00但是不确定我是否应该期待其他任何字节


阅读 353

收藏
2020-07-02

共1个答案

小编典典

您返回的HTTP响应是此处记录的Docker流格式。

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

2020-07-02