Node.js child_process.exec /bin/sh: 1: докер: ошибка не найдена

Я создал микросервис, используя фреймворк Moleculer. Я использовал child_process.exec для запуска команд 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...);

person Kell Maresh    schedule 21.04.2019    source источник
comment
Docker установлен на вашем компьютере, и работает ли тот же cmd из строки cmd? Просто хочу убедиться, прежде чем думать о чем-то еще.   -  person Rohit Jindal    schedule 21.04.2019
comment
Это альпийское изображение, в альпийском нет sh или bash.   -  person Akash Sharma    schedule 23.04.2019
comment
@RohitJindal да, докер установлен на моей машине, и команды в терминале работают нормально.   -  person Kell Maresh    schedule 24.04.2019
comment
@AakashSharma Я получаю сообщение об ошибке из /bin/sh, что докер не найден. Итак, sh должен существовать в образе, который я использую.   -  person Kell Maresh    schedule 24.04.2019
comment
Микросервис, из которого я использую child_process для запуска команд оболочки/докера, работает внутри контейнера докера (в этом контейнере докер не будет установлен). Поэтому я думаю, что у него не будет доступа к докеру, установленному на моей машине, из этого контейнера докера. Я был сбит с толку, потому что по какой-то причине мне удалось запустить команду ls, чтобы увидеть содержимое каталога по пути, по которому на моей машине установлен докер.   -  person Kell Maresh    schedule 24.04.2019


Ответы (1)


У меня была такая же проблема. Причина была просто в том, что я создал новый образ, но клиент Docker не присутствовал в моем контейнере, потому что я сделал только docker-compose restart <CONTAINER_NAME>, а не docker-compose stop <CONTAINER_NAME>, docker-compose rm <CONTAINER_NAME> и docker-compose up -d <CONTAINER_NAME>.

https://stackoverflow.com/a/63281470/1707015

person qräbnö    schedule 06.08.2020