我正在尝试按照示例here使用dockerode来运行docker容器。
我遇到的问题是容器的输出打印到stdout,但我正在尝试捕获它并将其存储在一个变量中,同时尽可能使用promises。
我的代码是:
const Docker = require('dockerode');
const docker = new Docker();
docker
.run(
'wappalyzer/cli',
['https://www.wappalyzer.com'],
[process.stdout, process.stderr],
{ Tty: false }
)
.then((data) => {
let output = data[0];
let container = data[1];
console.log(typeof output);
console.log(output);
return container.remove();
})
.catch((error) => console.log(error));发布于 2020-01-29 16:34:49
对于docker.run(),process.stdout,process.stderr流是底层stdio数据通过管道传输到的地方。
将这些参数更改为您控制的可写流。您可以使用诸如memory stream、a file或自己实现stream之类的东西。
const Docker = require('dockerode')
const streams = require('memory-streams')
const docker = new Docker()
const stdout = new streams.WritableStream()
const stderr = new streams.WritableStream()
docker.run(
'debian:10',
['sh', '-c', 'echo test; echo testerr >/dev/stderr; echo test3'],
[stdout, stderr],
{ Tty: false }
)
.then(([ res, container ]) => {
console.log(res)
console.log('stdout: %j', stdout.toString())
console.log('stderr: %j', stderr.toString())
return container.remove()
})
.catch((error) => console.log(error))https://stackoverflow.com/questions/59959647
复制相似问题