Мы используем группу экземпляров для запуска контейнеров докеров и настраиваем шаблон экземпляра для использования изображения как
us.gcr.io/my-project/my-image:latest
.
Когда мы вносим какие-либо изменения в образ докера, мы помечаем его меткой latest
и запустите:
gcloud compute instance-groups managed rolling-action restart my-instance-group --region us-central1
.
Это нормально работало для начальных изменений изображения, группа экземпляров vms будет извлекать новые изображения и заменять предыдущие изображения. Но после внесения дополнительных изменений он начинает выдавать ошибку:
no space left on device
По сути, GCP не обрабатывает устаревшие изображения, он сохраняет старую копию изображения. Но в случае «последовательного обновления виртуальных машин, оптимизированных для контейнеров», можем ли мы улучшить обработку автоматизации для этих случаев использования? Мы действительно не хотим подключать ssh к хосту и запускать docker image prune -a
время от времени вручную.
Вы можете добавить эту строку в начало вашего сценария запуска [1].
docker image prune -a
Это приведет к удалению всех неиспользуемых изображений перед загрузкой нового изображения позже в вашем сценарии запуска. Обратите внимание, что для запуска сценария запуска требуется перезапуск.
В результате ваши жесткие диски не заполнятся, и на ваших виртуальных машинах будет запущен последний образ докеров.