【发布时间】:2019-09-11 00:29:27
【问题描述】:
我使用“分子”框架创建了一个微服务。我使用 child_process.exec 在 shell 中运行 docker 命令。我收到“/bin/sh: 1: docker: not found”错误。
const { exec } = require("child_process");
.
.
.
exec("docker --version", (error, stdout, stderr) => {
if (error) {
console.error(`exec error: ${error}`);
return;
}
console.log(`stdout: ${stdout}`);
console.log(`stderr: ${stderr}`);
});
尝试将绝对路径设为:
exec("/usr/bin/docker --version", (err...);
但还是出现同样的错误。
我可以使用以下方法获取节点版本:
exec("node --version", (err...);
【问题讨论】:
-
Docker 已安装在您的机器上,并且相同的 cmd 是否从 cmd 行工作?只是想在考虑其他任何事情之前确定一下。
-
是基于alpine的镜像吗,alpine在镜像中没有sh或者bash。
-
@RohitJindal 是的,docker 安装在我的机器上,命令在终端中运行良好。
-
@AakashSharma 我从 /bin/sh 收到一个错误,提示找不到 docker。所以,sh 必须存在于我正在使用的图像中。
-
我使用 child_process 运行 shell/docker 命令的微服务在 docker 容器内运行(在该容器中,不会安装 docker)。所以我认为它无法从该 docker 容器中访问安装在我机器上的 docker。我很困惑,因为由于某种原因,我能够运行“ls”命令来查看我机器上安装 docker 的路径中的目录内容。
标签: node.js docker microservices moleculer