Удалите Docker-контейнеры с именами изображений через конвейер jenkins. - PullRequest
0 голосов
/ 01 февраля 2019

Я переворачиваю док-контейнеры всякий раз, когда запускается триггер из gitlab через конвейер jenkins.Поэтому я не могу удалить 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 контейнеров.Это возможно по трубопроводу Дженкинса?

Может кто-нибудь помочь мне, пожалуйста?

1 Ответ

0 голосов
/ 01 февраля 2019

В конвейере Дженкинса вам нужно сбежать от вашего $.Вы также используете одинарные кавычки как для Jenkins, так и для команды, которую вы выполняете.Вместо экранирования в вашей команде вы можете использовать другой синтаксис оболочки из Jenkins:

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