Docker:使用pv(pipe viwer)在构建过程中不输出任何内容

时间:2016-03-21 17:48:43

标签: docker pipe dockerfile docker-build

我尝试在Dockerfile中使用pv命令,但在调用构建过程时屏幕上没有显示任何内容。

我制作了一个非常简单的Dockerfile版本:

FROM debian:jessie

RUN apt-get update && apt-get install -y pv

RUN echo "Lorem ipsum dolor sit amet, consectetur adipiscing elit." | pv -L 5 -s56 > /dev/null

如果我在一个简单的终端中运行命令,我得到了这个输出:

35 B 0:00:07 [5.35 B/s] [================================================================>                                         ] 62% ETA 0:00:04`

但是当我像这样docker build -t foo .运行我的docker build时,我只得到了这个:

Sending build context to Docker daemon 2.048 kB
Step 1 : FROM debian:jessie
 ---> 040bf8e08425
Step 2 : RUN apt-get update && apt-get install -y pv
 ---> Using cache
 ---> 155e9ebf615f
Step 3 : RUN echo "Lorem ipsum dolor sit amet, consectetur adipiscing elit." | pv -L 5 -s56 > /dev/null
 ---> Running in 3afdb7b5822c
 ---> 6fcf83d0cd02
Removing intermediate container 3afdb7b5822c
Successfully built 6fcf83d0cd02

有没有办法让这个pv命令工作?

谢谢!

1 个答案:

答案 0 :(得分:0)

使用pv -fpv --force,它将按您期望的方式工作。引用pv的手册页:

   -f, --force
          Force output.  Normally, pv will not output any visual display if standard error is no  a  terminal.
          This option forces it to do so.

我不知道这是三年前提出这个问题时的一个选择,但是现在可以了。

在我的Dockerfile中这样子:

RUN echo "Lorem ipsum dolor sit amet, consectetur adipiscing elit." | pv -f -L 5 -s57 > /dev/null

我将获得以下示例输出:

Step 3/3 : RUN echo "Lorem ipsum dolor sit amet, consectetur adipiscing elit." | pv -f -L 5 -s57 > /dev/null
  ---> Running in 57c657f93610
25.0 B 0:00:05 [5.21 B/s] [==============>                     ] 44% ETA 0:00:06

...此外,要正确使用“ 100%”,您需要运行pv -s57echo -n来禁止换行。