考虑以下Dockerfile:
FROM alpine:edge
EXPOSE \
# web portal
8080 \
# backdoor
8081
这样建造:
docker build .
我们观察到这样的输出:
Sending build context to Docker daemon 17.1TB
Step 1/2 : FROM alpine:edge
---> 7463224280b0
Step 2/2 : EXPOSE 8080 8081
---> Using cache
---> 7953f8df04d9
[WARNING]: Empty continuation line found in:
EXPOSE 8080 8081
[WARNING]: Empty continuation lines will become errors in a future release.
Successfully built 7953f8df04d9
所以,鉴于将评论放在多行部分的中间很快就会变得非法:评论多行命令的新推荐方法是什么?
这对于RUN
命令尤为重要,因为我们鼓励我们通过&&
命令一起减少图像层。
不确定这是什么时候引入的,但我目前在版本中遇到过这个问题:
docker --version
Docker version 17.07.0-ce, build 8784753
我正在使用Docker的 edge 版本流,所以如果您使用Docker稳定版,这可能还不太熟悉。
答案 0 :(得分:9)
答案 1 :(得分:1)
您可以将RUN
命令分解为单独的行,然后使用实验(在编写*时)--squash
命令。
*请注意,有人建议multi-stage builds可能会使--squash
多余。正在积极讨论here,提案已开启here。
答案 2 :(得分:0)
如果像我一样,来到这里时遇到相同的错误,但在Dockerfile的RUN项目中没有任何注释,则说明您的行末尾有混合的也有DOS的。在您的Dockerfile上运行dos2unix,它将对其进行修复。