来自后台命令的Docker返回代码

来自后台命令的Docker返回代码,docker,return-code,Docker,Return Code,当在Docker容器中执行脚本并在其中运行后台任务时,我没有得到预期的返回代码 此示例docker文件突出显示了问题: FROM ubuntu:latest MAINTAINER Jakob H. Thomsen (jakob@gedefar.dk) RUN echo "#!/bin/bash\nset -e\n\nls / &\nexit 1" > /start_script.sh RUN chmod +x /start_script.sh 它在容器内创建以下文件/star

当在Docker容器中执行脚本并在其中运行后台任务时,我没有得到预期的返回代码

此示例docker文件突出显示了问题:

FROM ubuntu:latest
MAINTAINER Jakob H. Thomsen (jakob@gedefar.dk)

RUN echo "#!/bin/bash\nset -e\n\nls / &\nexit 1" > /start_script.sh
RUN chmod +x /start_script.sh 
它在容器内创建以下文件
/start\u script.sh

#!/bin/bash
set -e

ls / &
exit 1
因此运行
docker build-t jakob/test.
docker run jakob/test cat/start_script.sh
您会期望返回代码为1,因为退出1。它不是,它是0,这是由于
ls/&
(如果删除该命令,则会得到预期的返回代码1)

所以我的问题是为什么
ls/&
覆盖
exit 1
命令的返回代码?我试着让
退出1
在后台运行,但它没有改变返回代码

当我使用安装程序运行Ruby规范时,我确实依赖于最后一个命令的返回码,那么我可以做些什么让Docker返回最后一个命令的返回码吗


谢谢,我希望您能提供帮助,因为我花了很长时间才找到这些“错误”返回代码的确切问题。

事实证明,最新版本的Docker解决了这个问题: