2016-12-24 53 views
2

鉴于这种Dockerfile是什么| 1意味着泊坞历史

FROM debian:8.3 
ARG TEST=123 
RUN echo $TEST 

什么是|1代表在泊坞历史?

$ docker history 2feee0d8320f 
IMAGE    CREATED    CREATED BY          SIZE    COMMENT 
2feee0d8320f  About a minute ago |1 TEST=123 /bin/sh -c echo $TEST    0 B 
ac4872d0de0b  About a minute ago /bin/sh -C#(nop) ARG TEST=123     0 B 
f50f9524513f  9 months ago   /bin/sh -C#(nop) CMD ["/bin/bash"]    0 B 
<missing>   9 months ago   /bin/sh -C#(nop) ADD file:b5391cb13172fb513d 125.1 MB 

回答

3

in this issue如图所示,这代表一个build-arg(使用构建图像参数的个数即数)

一个很好的例子是http_proxy或源版本用于拉动的中间文件。
ARG指令让Dockerfile作者定义用户可在编译时使用--build-arg标志设置值:

$ docker build --build-arg HTTP_PROXY=http://10.20.30.2:1234 . 

此标志允许你传递就像普通访问编译时变量环境变量在Dockerfile的RUN指令中。


这里是构建ARGS通过1.10+去的例子:

[ 
    "|4 a=1 b=2 c=3 d=4 /bin/sh -c echo $a $b $c $d" 
] 
+0

谢谢你的。你有什么背景_why_这是必要的还是有用的?为什么它的行为与'ENV'变量不同(它似乎没有得到'history'输出中的'|')?我没有理解这一点的实际应用,只是满足我的好奇心。但是有没有实际的应用程序让那个'|号码? –

+0

@SanderVerhagen它似乎代表了在运行时*使用的参数数量,而不是ENV,它保留在图像中。 – VonC

+0

正如您从问题中的'history'输出中可以看到的那样,图像中还存在'ARG'参数。 –