Как очистить устаревшие образы докеров, созданные с помощью Jenkins CI / CD? - PullRequest
0 голосов
/ 03 июня 2019

Как очистить устаревшие образы докеров, созданные с помощью Jenkins CI / CD?

Я создал CI / CD Jenkins Pipeline, который выполняет следующие задачи

  1. Запустить сборку Gradle.Сборка gradle выполняет следующий набор задач
    • Сборка нескольких микросервисов springboot
    • Создание образа докера для каждого из микро-сервисов
    • Передача изображений в частный докерregistry
  2. Выполнить шаблоны helm для создания / обновления развертываний k8s в кластере k8s.

Хотя весь процесс работает хорошо.Я ищу решение для пары сценариев.

  1. Поскольку это CI / CD, сборка запускается при каждом нажатии кода.Таким образом, образы докеров в личном реестре также будут созданы и в конечном итоге пожирают все дисковое пространство.Как условно очистить образы докера?
  2. Если разработан скрипт для использования API-интерфейсов REST докера для очистки изображений, как мне условно пропустить удаление определенных изображений (например, изображений, связанных с помеченными сборками Jenkins)
  3. Существуют ли какие-либо рекомендации или стандарты для этой задачи?

Ответы [ 2 ]

1 голос
/ 03 июня 2019

Один из способов решения этой проблемы - использовать другую работу Дженкинса, особенно с целью удаления старых изображений.

Эта работа, вероятно, будет запускаться по какому-то подходящему расписанию , скажем, каждую ночь, раз в неделю и т. Д., В зависимости от того, насколько быстро вы переживаете, что вам не хватит места.

Что касается того, как бы вы удалили изображения, взгляните на команду docker image prune с параметром --filter, как описано в в этом ответе .Это позволит вам удалять только изображения, например, старше 7 дней и т. Д.

Надеюсь, это поможет!

0 голосов
/ 03 июня 2019

Я думаю, что ниже должен быть способ идти вперед

  1. Найти все контейнеры

    docker ps -a -f "ваше состояние"

  2. Затем остановите и удалите все контейнеры, которые вы нашли с помощью следующих команд

    docker stop "имя контейнера" ​​docker rm "имя контейнера" ​​

  3. найтивсе висячие изображения

    docker images -f "dangling = true"

  4. Удалить все изображения

    docker rmi "name name"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...