Py学习  »  docker

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

MohanKanth • 4 年前 • 807 次点击  

只要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 {}'

但上述命令只能通过命令模式删除容器。 但这不是通过詹金斯管道

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

有人能帮我吗?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/50784
 
807 次点击  
文章 [ 1 ]  |  最新文章 4 年前
BMitch
Reply   •   1 楼
BMitch    5 年前

在詹金斯的管道里,你需要逃离 $ . 您还在Jenkins和运行的命令中使用单引号。您可以使用与Jenkins不同的shell语法,而不是转义命令中的命令:

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