在 Jenkins 机器上,我想创建一个具有指定名称的 docker 容器,前提是它尚不存在(在 shell 脚本中)。我想我可能会运行命令来创建容器,如果有失败则忽略失败,但这会导致我的詹金斯工作失败。 因此,我想知道如何使用 bash 检查 docker 容器是否存在。 原文由 kshah 发布,翻译遵循 CC BY-SA 4.0 许可协议
您可以通过 <name> 来检查是否存在正在运行的容器,然后像这样启动它: [ ! "$(docker ps -a | grep <name>)" ] && docker run -d --name <name> <image> 更好的: 利用 https://docs.docker.com/engine/reference/commandline/ps/ 并检查退出的容器是否阻塞,因此您可以在运行容器之前先将其删除: if [ ! "$(docker ps -q -f name=<name>)" ]; then if [ "$(docker ps -aq -f status=exited -f name=<name>)" ]; then # cleanup docker rm <name> fi # run your container docker run -d --name <name> my-docker-image fi 原文由 ferdy 发布,翻译遵循 CC BY-SA 3.0 许可协议
我想 docker container inspect <container-name> || docker run... 因为 docker container inspect 调用会设置 $?如果容器不存在(无法检查)则为 1,如果容器确实存在则为 0(这尊重已停止的容器)。所以运行命令只会在容器不存在的情况下被调用。 原文由 WiRai 发布,翻译遵循 CC BY-SA 3.0 许可协议
您可以通过
<name>
来检查是否存在正在运行的容器,然后像这样启动它:更好的:
利用 https://docs.docker.com/engine/reference/commandline/ps/ 并检查退出的容器是否阻塞,因此您可以在运行容器之前先将其删除: