检测docker是否在同一脚本中成功运行

问题描述 投票:0回答:1

我的script.sh

#/bin/sh
docker run --name foo 

((仅假设docker命令有效并且容器名称为foo。无法将实际命令公开。)

我有一个运行Docker容器的脚本。我想检查它是否成功运行,并在终端上echo成功运行。

如何使用container name完成此操作?我知道我必须使用类似docker inspect的命令,但是当我尝试添加该命令时,该命令仅在我^C我的脚本之后才会执行,这可能是因为docker已经执行了。

this中,泊坞窗是通过其他脚本执行的,因此它不适用于我的用例。

shell docker inspect docker-run
1个回答
0
投票
s='^foo$' [[ -n $(docker ps -qf "name=$s") ]] && echo "running" || echo "not running"

0
投票
如您的示例所示,在前台模式下运行容器时,它将应用程序返回代码转发到调用shell。因为您没有发布任何代码,所以我举一个简单的例子:我们创建一个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

重击给我们$?中的返回码:

$ echo $?
1

因此,我们看到容器失败了,可以在失败时简单地check them e.g. inside some bash script with an if-condition执行某些操作:

#!/bin/bash
docker run --rm rc-test
rc=$?
if [ $rc -ne 0 ]; then
    echo "Docker container failed with rc ${rc}"
fi
© www.soinside.com 2019 - 2024. All rights reserved.