【问题标题】:docker api, attaching container returns extra charactersdocker api,附加容器返回额外字符
【发布时间】:2014-08-06 12:58:59
【问题描述】:

我正在浏览器中使用来自 javascript 的 docker api, 我启动一个执行“composer install”命令的容器,然后附加到它以获取输出。 一切正常,但我在每一行的开头都有一些额外的字符

    -Installing assets using the hard copy option
    PInstalling assets for Symfony\Bundle\FrameworkBundle into web/bundles/framework
    BInstalling assets for Propel\PropelBundle into web/bundles/propel

在这两行例子中,P和B在安装前特别是word,但实际上是随机的字母或数字。

我需要在显示之前解析或处理附加容器的输出吗?

注意:不仅来自浏览器,也来自终端 curl 命令,在几乎行的开头也会得到相同的随机字符

curl 'http://localhost/dockerapi/containers/54053a10dc05b45c400b16733d2edd1cbfb6b6d877badf5cc26d3da7d2165375/attach?logs=1&stream=1&stdout=1' 
-X POST 
-H 'Origin: http://localhost' 
-H 'Accept-Encoding: gzip,deflate,sdch' 
-H 'Accept-Language: en-US,en;q=0.8,es;q=0.6' 
-H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36'
-H 'Accept: application/json, text/plain, */*' 
-H 'Referer: http://localhost/' 
-H 'Connection: keep-alive'
-H 'Content-Length: 0' 
--compressed

【问题讨论】:

    标签: javascript api curl docker


    【解决方案1】:

    原来这是记录在这里 http://docs.docker.com/reference/api/docker_remote_api_v1.13/#attach-to-a-container

    我只是忽略了,因为我认为文本格式是响应的其余部分,但实际上是文档。 @soullou 用户已在 https://github.com/docker/docker/issues/7375#issuecomment-51462963 中澄清了这一点

    It is encoded on the first 8 bytes like this:
    
    header := [8]byte{STREAM_TYPE, 0, 0, 0, SIZE1, SIZE2, SIZE3, SIZE4}
    
    `STREAM_TYPE` can be:
    
    -   0: stdin (will be written on stdout)
    -   1: stdout
    -   2: stderr
    
    `SIZE1, SIZE2, SIZE3, SIZE4` are the 4 bytes of
    the uint32 size encoded as big endian.
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-13
      • 2010-12-05
      • 1970-01-01
      • 2023-03-05
      • 1970-01-01
      • 2021-01-27
      • 1970-01-01
      相关资源
      最近更新 更多