【问题标题】:Remove docker containers with image names through jenkins pipeline通过 jenkins 管道删除具有图像名称的 docker 容器
【发布时间】:2019-06-26 00:18:43
【问题描述】:

每当 gitlab 通过 jenkins 管道触发时,我都会重新部署 docker 容器。所以我无法删除带有图像名称的 docker 容器。我遵循了以下命令:

sh 'docker ps -f name=imagename -q | xargs --no-run-if-empty docker container stop

sh 'docker container ls -a -fname=imagename -q | xargs -r docker container rm'

上述命令无法删除带有镜像名称的容器。

我也试过下面的命令。

sh 'docker ps -a | awk '{ print $1,$2 }' | grep imagename | awk '{print $1 }' | xargs -I {} docker rm -f {}'

但上述命令只能通过命令模式删除容器。 但它不适用于 Jenkins 管道

我需要删除所有带有图像名称的容器。 例如,如果有 5 个容器具有一个图像名称。然后通过该图像名称,我需要删除 5 个容器。是否可以通过詹金斯管道?

谁能帮帮我?

【问题讨论】:

    标签: docker containers jenkins-pipeline docker-image


    【解决方案1】:

    在 Jenkins 管道中,您需要转义您的 $。您还在 Jenkins 和正在运行的命令中使用单引号。您可以使用与 Jenkins 不同的 shell 语法,而不是在命令中转义它们:

    sh """
      docker ps -a \
        | awk '{ print \$1,\$2 }' \
        | grep imagename \
        | awk '{print \$1 }' \
        | xargs -I {} docker rm -f {}
      """
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-20
      • 2018-03-27
      • 2021-09-02
      • 2020-01-10
      • 2021-07-17
      • 2020-03-11
      • 1970-01-01
      • 2018-03-17
      相关资源
      最近更新 更多