当通过Node.jssubprocess同步执行时,Docker拉不能实时下载大小/总大小

当我运行docker pull my-image从我的terminaldocker pull my-image这是我的输出如何。

  59e69571f6c7: Pull complete 43da27f69c98: Pull complete d22174e9eddd: Pull complete cc0ac48a6d21: Downloading 312.3 MB/2.888 GB b47aa969d5dc: Download complete 

当我运行一个Node.js代码

 const { exec } = require('child_process'); exec('docker pull my-image', (error, stdout, stderr) => { if (error) { console.error('exec error: ${error}'); return; } console.log('stdout: ${stdout}'); console.log('stderr: ${stderr}'); }); 

我的输出看起来像这样。

 c49bda5ed612: Waiting 43da27f69c98: Verifying Checksum 43da27f69c98: Download complete d22174e9eddd: Verifying Checksum d22174e9eddd: Download complete b47aa969d5dc: Verifying Checksum 

我期待着同样的产出。 主要是有关多less下载和剩余的信息。 如果我想根据下载的图像大小来进度进度条,则无法使用此输出

请让我知道是否有办法find实时下载大小状态。

仅供参考如果您从curl下载任何二进制文件,请在Node.js exec命令中获取下载的实时字节数/总数据。

你提到的输出只有在docker CLI运行的地方有一个伪tty分配的时候才会发生。 您可以通过以下方式运行命令来强制输出在命令行上不具有伪tty:

 docker pull my-image | cat 

极点将会发生,然后你会得到与上面提到的相同的输出。

很可能您调用docker CLI的方式不是分配伪tty,导致它不会将进度信息传输到标准输出。

尝试使用分配的伪tty来调用可执行文件以获取所需的行为。