通过 jenkins 管道删除 docker 个具有图像名称的容器

Remove docker containers with image names through jenkins pipeline

每当 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 , }' | grep imagename | awk '{print  }' | xargs -I {} docker rm -f {}'

但是上面的命令只能通过命令模式来删除容器。 但它不能通过 Jenkins 管道工作

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

有人可以帮我吗?

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

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