解析器指令

解析器指令是可选的,并且会影响Dockerfile处理后续行的方式。解析器指令不会向build添加layers,并且不会被作为build的一步进行显示。解析器指令用一种特殊的注释形式写在表单里# directive=value。一个指令可能只被运行一次。

一旦一行注释,空行或者build指令被处理,Docker就不会再查找任何解析器指令。相反他会把解析器指令格式的命令当做注释,并不会尝试验证他是不是解析器指令。因此所有的解析器指令都应该位于Dockerfile的最前面。

解析器指令是不区分大小写的。不过我们一般把他们写做小写。还有一个约定是在解析器指令后要加一行空行。在解析器指令中行换行符是不被支持的。

根据上面的规则,下面的例子都是非法的:

非法的行连续符:

# direc \
tive=value

非法的出现两次:

# directive=value1
# directive=value2

FROM ImageName

因为出现在一条build指令后被当做注释:

FROM ImageName
# directive=value

因为出现在一个非解析器指令的注释之后被当做注释:

# About my dockerfile
FROM ImageName
# directive=value

未知解释器指令被视为评论,因为不被承认。此外,由于在不是解析器指令的注释之后出现,已知指令被视为注释。

# unknowndirective=value
# knowndirective=value

在解析器指令中允许出现不断开的空格。因此下面的指令将被做相同的处理。

#directive=value
# directive =value
#    directive= value
# directive = value
#      dIrEcTiVe=value

下面的解析器指令是被支持的:

  • escape

results matching ""

    No results matching ""