当通过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来调用可执行文件以获取所需的行为。