child_process无法执行docker run

时间:2016-08-04 13:27:54

标签: docker electron

使用像ls,pwd这样的简单命令甚至打开外部应用程序我使用子进程成功,但在内置电子应用程序中使用exec和docker命令时,我收到此错误:

exec Error: Command failed: docker exec -it 6bec55e9e86e touch home.html
the input device is not a TTY

以下是代码:

var exec = require('child_process').exec;

exec('docker exec -it 6bec55e9e86e touch casa.html', function (error, stdout, stderr) {
  console.log('stdout: ' + stdout);
  console.log('stderr: ' + stderr);
  if (error !== null) {
    console.log('exec error: ' + error);
  }
});

2 个答案:

答案 0 :(得分:3)

请删除-t标记。所以你的命令应该是docker exec -i 6bec55e9e86e touch casa.html

此错误the input device is not a TTY表示您的输入设备不是Teletypes(终端),并且在docker的命令中,-t标志符号为terminal,因此它们是冲突的。所以只需删除它。

答案 1 :(得分:-1)

使用spawn并将options.stdio设为inherit即可:

const spawn = require('child_process').spawn;
spawn('docker', ['exec', '-it', '6bec55e9e86e', 'touch', 'casa.html'], { stdio: 'inherit' })