Jules Olléon 的链接答案适用于永久运行的服务,如网络服务器、应用程序服务器、数据库和类似软件。在您的示例中,您似乎想要按需运行一个容器,该容器旨在完成一些工作然后退出。在这里,状态没有帮助。
如您的示例所示,在前台模式下运行容器时,它将应用程序返回代码转发给调用外壳。由于您没有发布任何代码,我给您举个简单的例子:我们创建一个rc.sh
脚本,返回 1 作为退出代码(通常表示失败):
#!/bin/sh
echo "Testscript failed, returning exitcode 1"
exit 1
它被复制并在此执行Dockerfile
:
FROM alpine:3.7
COPY rc.sh .
ENTRYPOINT [ "sh", "rc.sh" ]
docker build -t rc-test .
现在我们使用并执行一个短暂的容器来构建这个镜像:
$ docker run --rm rc-test
Testscript failed, returning exitcode 1
Bash 给我们返回码$?
:
$ echo $?
1
所以我们看到容器失败了,可以简单地检查它们,例如在一些带有 if 条件的 bash 脚本中,以便在它失败时执行一些操作:
#!/bin/bash
if ! docker run --rm rc-test; then
echo "Docker container failed with rc $?"
fi