当我wget
一个文件时,例如从GitHub,它会显示一个漂亮的单行进度条,如下所示:
wget -N http://db.sqlite.zip
db.sqlite.zip 28%[====> ] 68.79M 370KB/s eta 5m 53s
但是如果我在启动一个容器时以相同的方式运行wget
命令,作为一个bash脚本来获取一些数据,它会打印数千行,显然是针对每下载50K位:
app_1 | 0K .......... .......... .......... .......... 0% 212K 19m12s
app_1 | 50K .......... .......... .......... .......... 0% 426K 14m22s
app_1 | 100K .......... .......... .......... .......... 0% 38.4M 9m37s
app_1 | 150K .......... .......... .......... .......... 0% 430K 9m35s
app_1 | 200K .......... .......... .......... .......... 0% 33.9M 7m41s
...
- 很多...更多这样的行(它实际上填充了stdout缓冲区,我不想这样做)。
我怎么能在我的主机上得到同样的行为,例如显示一行进度条?当然,如果可能的话。否则,我只是简单地-q
它,这就结束了。
2条答案
按热度按时间3qpi33ja1#
在构建期间,Docker不分配tty。这将使
wget
回退到dot
进度条的显示方法。遗憾的是,对于您的问题没有直接的解决方案。以下是一些建议:
bar
方法:dot
方法打印行的频率:wget
的输出转换为您想要的输出。y1aodyip2#
这个命令需要下载指定的新容器映像。你已经注意到很多“层”被下载了。这是因为你的容器映像是建立在另一个之上的,所以你也需要下载那个映像,并且可能那个映像是建立在另一个之上的,这就是为什么你会被显示所有下载行的原因。这就是docker架构的工作原理。
回到你最初的问题,你不能命令wget按顺序获取docker的下载。但是你可以用管道命令只获取控制台输出的第一行。当然其他的仍然存在,但是你不会看到它们。