Конвейер Jenkins для очистки устаревших изображений и контейнеров в режиме docker Swarm - PullRequest
0 голосов
/ 05 марта 2020

Я настроил docker рой, всего 8 узлов, 5 рабочих и 3 менеджера. Я использую конвейер Jenkins для запуска образов через docker команду стека. Программа установки работает нормально, и Jenkins может успешно развернуть / запустить образы docker. Тем не менее, я вижу, что в узле остались некоторые устаревшие контейнеры или образы, и, следовательно, они занимают место на диске. Поэтому, чтобы избежать этого, я вручную запускаю следующие команды:

1. docker info -> this displays stopped containers and all images.
2. docker container prune -f   -> this removes all the stopped and unused containers.
3. docker system prune -a -f   -> this cleans up all the stale images.

Я запускаю все вышеперечисленные команды последовательно на всех узлах для всех сред. Теперь я хочу автоматизировать его через конвейер Jenkins, который будет запускаться ежедневно один раз на всех узлах этого роя docker и очищать устаревшие изображения и контейнеры. Какой будет лучший подход. Пожалуйста, предложите. Кстати, я новичок в docker эко-системе. Спасибо

1 Ответ

0 голосов
/ 05 марта 2020

Вот наш код для очистки docker. Мы запускаем его до и после выполнения тестов.


def cleanDocker(){
    sh label: "removing running containers",
        script: "timeout 30 docker ps -aq | xargs -r docker rm -f || true"
    sh label: "pruning network",
        script: "docker network prune -f"
    sh label: "pruning volumes",
        script: "docker volume prune -f"
}

...