我在Dockerfile中有这个
RUN eval `ssh-agent -s` && ssh-add /root/.ssh/id_rsa
我看到:
命令'/ bin / sh -c eval
ssh-agent -s
&& ssh-add /root/.ssh/id_rsa'返回了非零代码:1
,但docker构建将继续直到到达ENTRYPOINT,然后退出。如果其中一个RUN命令以非零值退出,如何使docker构建过程停止?
答案 0 :(得分:3)
Docker不会将运行命令的不同部分连接为逻辑AND
。它更像是OR
执行此操作:
RUN eval `ssh-agent -s`
RUN ssh-add /root/.ssh/id_rsa
TL; DR: 一个简短的例子说明为什么:
这一直持续到最后:
FROM alpine
RUN exit 0
RUN echo Hello
这会在第一个RUN
之前停止:
FROM alpine
RUN exit 1
RUN echo Hello
此操作一直运行到最后(如您的示例):
FROM alpine
RUN exit 0 && exit 1
RUN echo Hello