当前位置: 首页 > 面试题库 >

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

罗昊明
2023-03-14
问题内容

我正在运行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但是不确定我是否应该期待其他任何字节


问题答案:

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

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



 类似资料:
  • 问题内容: 此Go代码始终引用字符串:模板中的http://play.golang.org/p/8k4s8dv2PE-您可以看到结果。我如何产生?请注意,它还会删除代码中的所有注释!如何调整?这个问题是我的Go:模板中带引号的字符串的延续。 问题答案: 该软件包专门用于逃避值。就您而言,您正在尝试传入JavaScript代码,而不是简单的值。您可以通过更改的类型做到这一点到的。此类型包装a 并表示

  • 教程剩下的部分不需要helloworld这个service了,所以我们现在可以将它删除掉。 通过ssh登录到manager节点。 运行docker service rm helloworld来删除helloworld服务(service): $ docker service rm helloworld helloworld 运行docker service inspect <SERVICE-I

  • 嗨,有人能给我删除\r\n空格和向后斜杠()的代码片段吗? "有效负载": "{**\r\n**"postId": 1,\r\n"id": 1,\r\n"name":"id labore ex et quam lab um",\r\n"email":"Eliseo@gardner.biz",\r\n"body":"laudantium enim quasi est quidem magnam vo

  • 此问题似乎与在帮助中心定义的范围内编程无关。 您好,任何人都可以给我删除空格和反斜杠()的代码段。 “Payload”:“{**\r\n**”postId:1,\r\n“id”:1,\r\n“name”:“id labore ex et quam labourum”,\r\n“email”:Eliseo@gardner.biz“,\r\n“body”:“laudantium enim quasi

  • 这款应用目前以黑色背景开始。我想要一个在黑色背景上写着“警告可能会导致癫痫发作”的标签,一旦屏幕被按下,标签就会消失。这真的很简单,但我是新手

  • 我正在尝试对GsonConverterFactory使用Retrofit2,问题是这是我从okhttp: 因此,我得到以下例外: java.lang.IllegalStateException:应为BEGIN_OBJECT,但在第1行第2列为字符串 如何删除特殊字符和回车与改装2?