当前位置: 首页 > 知识库问答 >
问题:

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

冷宏茂
2023-03-14
#/bin/sh
docker run --name foo 

在这个答案中,docker是在其他脚本中执行的,所以它并不真正适用于我的用例。

共有1个答案

林建本
2023-03-14

Jules Olléon的链接答案适用于永久运行的服务,如webservers、应用服务器、数据库和类似软件。在您的示例中,似乎希望按需运行容器,该容器被设计为执行一些工作然后退出。在这里,地位无济于事。

如您的示例所示,当以前台模式运行容器时,它会将应用程序返回的代码转发给调用shell。因为您没有发布任何代码,所以我给出了一个简单的示例:我们创建一个rc.sh脚本,返回1作为exit-code(这通常表示一些失败):

#!/bin/sh
echo "Testscript failed, returning exitcode 1"
exit 1

它在以下dockerfile中被复制和执行:

FROM alpine:3.7
COPY rc.sh .
ENTRYPOINT [ "sh", "rc.sh" ]
$ docker run --rm rc-test
Testscript failed, returning exitcode 1
$ echo $?
1
#!/bin/bash

if ! docker run --rm rc-test; then
    echo "Docker container failed with rc $?"
fi
 类似资料:
  • 问题内容: 我正在编写一个非常简单的bash脚本,以快速检查我的容器仍在构建并正确启动,并且其中的应用程序能够响应请求。 有时会失败,例如因为我尝试将容器绑定到的端口已分配。但是当发生这种情况时,退出代码仍为0,因此我无法使用退出代码。如何以编程方式检查容器是否已正确启动? 我正在考虑的解决方案是: 解析输出中的错误 查看容器是否正在运行 但是这些似乎都有些过分和丑陋。我是否缺少更好的方法来检查是

  • 我正在编写一个非常简单的bash脚本,以快速检查我的容器是否仍然正确构建和启动,以及里面的应用程序是否响应请求。 有时会失败,例如,因为我试图将容器绑定到的端口已经分配。但是当这种情况发生时,的退出代码仍然是0,所以我不能使用退出代码。如何以编程方式检查容器是否正确启动? null

  • 问题内容: 我有一个可能位于Windows系统或Linux系统上的PHP脚本。无论哪种情况,我都需要运行不同的命令。 如何检测我所处的环境?(最好是一些PHP而不是聪明的系统技巧) 更新资料 为了明确起见,该脚本是从命令行运行的。 问题答案: 检查常量_Docs_ 的值。 它会给你不同的值在Windows一样,或。

  • 在Unix shell脚本中,我想通过if语句检查diff命令的输出是否等于0。这样我就可以相应地给出if case语句。 例如:Abc.sh 输出:

  • 问题内容: 我有一个Node.js脚本所需的脚本,我想保持JavaScript引擎独立。 例如,我只想在Node.js下运行。如何执行此测试? 发布此问题时,我不知道Node.js模块功能是否基于CommonJS。 对于我给出的具体示例,一个更准确的问题是: 脚本如何判断是否已将其作为CommonJS模块使用? 问题答案: 通过寻求CommonJS支持 ,这是Underscore.js库的实现方式

  • 问题内容: 我的问题与此相似:如何检测我的shell脚本是否正在通过管道运行?。区别在于我正在使用的Shell脚本是用Node.js编写的。 假设我输入: 然后,我怎么能得到的价值的? 我已经阅读了Unix和Node:管道和流,但这似乎只能提供异步解决方案(除非我误会了)。我正在寻找一个同步解决方案。同样,通过这种技术,检测脚本是否正在通过管道传输似乎不是很简单。 TL; DR我的问题有两个方面: