Docker API:在网页中显示容器日志

我正在使用Appersonlabs的https://github.com/appersonlabs/docker.io中的docker.io包在node.js中使用docker web客户端的项目。 为了构build一个完整的客户端,我想将容器日志stream式传输到一个网页。 这是我使用api的路线:

app.get('/containers/:id',function(req,res){ console.log('INSPECT CONTAINER WITH ID '+req.params.id); docker.containers.inspect(req.params.id,function(err,infos){ docker.containers.attach(req.params.id, {stream: true, stdout: true, stderr:false, tty:false}, function(err,stream) { console.log(stream); res.render('containers/show.ejs',{container: infos, name: name, stream: stream}); }); }); }); 

但是当我console.logstream我有一堆输出信息的大JSON文件。

根据docker的API,我应该如何继续( http://docs.docker.io/en/latest/reference/api/docker_remote_api_v1.10/#attach-to-a-container )

实施

实现Attach协议的最简单方法如下:

读取8个字节

  • 根据第一个字节selectstdout或stderr
  • 从最后4个字节中提取帧大小
  • 读取提取的大小并将其输出到正确的输出
  • 转到第一步

题 :

我应该如何着手实现呢? 我真的不知道如何开始。

注意:据我所知,我的http请求是正确的,这里是我从API获得的JSON响应的示例:

 method: 'POST', path: 'http://localhost:4243/v1.7/containers/8196569ecaaf2bbcf726189b60212676ad1351f6ff4df6ebe9deb4743b52e138/attach?stream=true&stdout=true&stderr=false&tty=false', _headers: [Object], 

我想你需要在附加选项中添加“logs:true”:

 docker.containers.attach(containerId, {logs: true, stream: true, stdout: true, stderr: false, tty: false}, function(err, stream) 

我只是testing它,它在docker0.9.1工作正常。

如果您像我一样find这篇文章,并希望获得一个基本的实施示例,请执行以下操作: https : //gist.github.com/m451/1dfd41460b45ea17eb71