regex - 仅当具有给定名称的 Docker 容器不存在时,如何执行 Bash 命令?

标签 regex bash docker

在 Jenkins 机器上,我想创建一个具有指定名称的 docker 容器,前提是它尚不存在(在 shell 脚本中)。我想我可能会运行命令来创建容器,如果有失败则忽略失败,但这会导致我的 Jenkins 工作失败。

因此,我想知道如何使用 bash 检查 docker 容器是否存在。

最佳答案

您可以通过 grepping 查找 <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

关于regex - 仅当具有给定名称的 Docker 容器不存在时,如何执行 Bash 命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38576337/

相关文章:

java - 如何匹配 ColdFusion 或 Java 正则表达式中的拉丁 unicode 字符?

Javascript REGEX 从 url 中获取 5 个字符

docker - 使用Docker在DC/OS上运行Airflow

javascript - 正则表达式搜索字符串中最长的单词

regex - htaccess 使用字符串参数的部分值重定向 URL

string - Bash:如何评估这个字符串?

bash - 为什么 `cat` 在这里列出文件而不是文件内容?

bash - shell编程中$(command)和 `command`有什么区别?

docker - 自签名证书能否保护多个 CN/FQDN?

linux - 当我从 scikit-learn 导入一些东西时,我有大量的上下文切换