通过 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 {}
"""
每当 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 {}
"""