Javascript Docker pull在通过Node.js子进程同步执行时未提供实时下载大小/总大小
当我运行Javascript Docker pull在通过Node.js子进程同步执行时未提供实时下载大小/总大小,javascript,node.js,docker,exec,child-process,Javascript,Node.js,Docker,Exec,Child Process,当我运行docker时,从我的终端拉取我的图像,这就是我的输出的样子 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
docker时,从我的终端拉取我的图像
,这就是我的输出的样子
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
我期望得到同样的结果。主要是关于下载量和剩余量的信息。如果我想根据下载图像的大小对进度条进行处理,则无法处理此输出
请让我知道是否有办法找到实时下载大小状态
仅供参考如果您从curl下载任何二进制文件,在Node.js exec命令中,您将获得实时下载字节数/总数据 您提到的输出仅在
docker
CLI在分配了伪tty的地方运行时发生。通过以下方式运行命令,可以强制输出在命令行上不具有伪tty:
docker pull my-image | cat
极点会发生,然后你会得到和你上面提到的一样的输出
您调用docker
CLI的方式可能没有分配伪tty,导致它没有将进度信息流式传输到标准输出
尝试使用分配的伪tty调用可执行文件以获得所需的行为。那么问题是什么?
312.3 MB/2.888 GB
在Node中执行时看不到此信息。js感谢您的解释。我对这个概念不太了解。现在我很熟悉了。然而,我试图在nodejs spwan/child进程中找到启用tty,但没有成功。如果你能告诉我做这件事的方法,那就太好了。