У меня есть кластер Service Fabric с 5 виртуальными машинами Windows.Я разворачиваю приложение, которое представляет собой набор из 10 разностных контейнеров.Каждый раз, когда я внедряю, я увеличиваю тег контейнеров с номером сборки.Например:
foo.azurecr.io/api:50
foo.azurecr.io/web:50
Наша система сборки непрерывно создает каждый сервис, отмечает его, передает его в Azure, увеличивает все образы в файле ApplicationManifest.xml и затем развертывает приложение в Azure.Вероятно, мы создаем новую версию несколько раз в день.
Это прекрасно работает, но в течение нескольких недель дисковое пространство на каждой виртуальной машине заполняется.Это потому, что на каждой виртуальной машине все эти старые образы Docker все еще занимают место на диске.Глядя на это сейчас, около 50 гигов старых изображений сидят без дела.В конечном итоге это привело к сбою развертывания.
Мой вопрос: Существует ли стандартный способ очистки образов Docker?Прямо сейчас, единственная идея, которую я имею, - это создать какую-то задачу Windows Scheduler, которая запускает docker image prune --all
каждый день или что-то в этом роде.Однако в какой-то момент мы хотим иметь возможность создавать новые виртуальные машины по мере необходимости, поэтому я бы предпочел, чтобы каждая виртуальная машина была «стандартным» образом.Другая идея заключается в том, чтобы каждый раз использовать один и тот же тег, такой как api:latest
и web:latest
.Однако тогда мне нужно было бы найти способ заставить каждую виртуальную машину выдать команду docker pull
для получения последней версии образа.
Кто-нибудь раньше решал эту проблему?