更新
我想我需要使用 .run 而不是 .createContainer
我得到了命令在没有安装的情况下工作但是我不确定如何将 docker 容器绑定到我的 cwd
docker.run("wpscanteam/wpscan", [
// "--mount",
// "type=bind,source=" + process.cwd() + "/docker-bind,target=/output",
// "-o",
// "/output/wpscan-output.json",
"--format",
"json",
"--url",
"https://example.com/",
], process.stdout, function (err, data, container) {
console.log(data.StatusCode);
})
如果未注释,注释的行 (2-6) 会导致错误Scan Aborted: invalid option: --mount
我被允许添加这些创建参数,我认为我需要使用volume
,但我不确定。
OG邮报
我正在尝试使用dockerode来执行这个 docker 命令docker run --rm --mount type=bind,source=$HOME/docker-bind,target=/output wpscanteam/wpscan:latest -o /output/wpscan-output.json --format json --url 'https://example.com/'
这是我尝试过的,但是当我运行它时,它使容器具有正确的命令,但是它(几乎)立即退出,并且当我docker container inspect
创建的容器没有安装的卷时
我不确定Mount
我应该使用正确的参数,但我认为这不是问题所在,因为 docker 实例在 <.5secs 内停止,当我在 WSL 中运行命令时,运行大约需要 10 秒,所以我不要认为我的cmd:[]
论点正在执行。
docker.createContainer({
Image: 'wpscanteam/wpscan',
AttachStdin: false,
AttachStdout: true,
AttachStderr: true,
Mounts:
[
{
"Type": "bind",
"Source": process.cwd() + "/docker-bind",
"Destination": "/output",
}
],
Tty: false,
Cmd: [
"-o",
"/output/wpscan-output.json",
"--format",
"json",
"--url",
"https://example.com/"
],
OpenStdin: false,
StdinOnce: false
}, (err, container)=>{
container.start(function (err, data) {
console.log(data)
console.log(err)
})
})
当我在 WSL 2 中运行此命令docker run --rm --mount type=bind,source=$HOME/docker-bind,target=/output wpscanteam/wpscan:latest -o /output/wpscan-output.json --format json --url 'https://example.com/'
时,它可以完美地将 JSON 放置在我磁盘上的 docker-bind 文件夹中。
将此命令转换为我使用的 dockerodeprocess.cwd()
而不是 $HOME 时,因为 $HOME 是 WSL 功能。(我的项目目录中也有该docker-bind
文件夹,所以这应该不是问题)
我对 docker 非常有经验,但这超出了我的专业知识。
tl; dr 我有一个 docker 命令,我需要将输出放入我的项目目录中的文件夹中。它需要能够使用 Node.js 运行
如果有更好的库得到很好的支持,请告诉我。
Docker Docs为您提供方便 (1.42)