Обновление экземпляра облачных вычислений Google

У меня есть веб-сайт, развернутый с использованием образа докера внутри экземпляра вычислений Google.

Я не могу обновить экземпляр облака Google новым изображением. Обновление вычислительного экземпляра новым образом докера и запуск контейнера ничего не меняют.

Вот шаги, которые я предпринимаю для обновления экземпляра вычислений Google:

docker build -t vue_app -f deploy/web/Dockerfile . --tag gcr.io/namesapi-1581010760883/vue-app:v1
docker push gcr.io/namesapi-1581010760883/vue-app:v1
gcloud compute instances update-container --container-image=gcr.io/namesapi-1581010760883/vue-app:v1 vue-app-vm

Итак, в первой строке я создаю образ, содержащий веб-сайт и http-сервер. Я запустил его локально и могу подтвердить, что изображение работает и содержит все ожидаемые изменения.

Следующая строка отправляет изображение в облако Google, а последняя третья строка должна обновить существующий экземпляр вычислений Google новым изображением.

После запуска ни одно из изменений не отражается в экземпляре. Я захожу на сайт, размещенный на экземпляре, и вижу, что ничего не изменилось. Я проделывал эти же шаги много раз, и до недавнего времени все работало нормально. Что мне не хватает?

2 ответа

Решение

Решил вопрос. Для дальнейшего использования запустите следующие

gcloud compute instances update-container --container-image=gcr.io/namesapi-1581010760883/vue-app:v1 vue-app-vm

не заменяет существующее изображение в экземпляре, вместо этого он создает новое изображение. Итак, через какое-то время в экземпляре накапливается ряд изображений:

REPOSITORY                                            TAG                 IMAGE ID            CREATED             SIZE
gcr.io/namesapi-1581010760883/vue-app                 v1                  d21bd8939323        9 days ago          394MB
gcr.io/namesapi-1581010760883/vue-app                 <none>              c136b1c9e0d4        13 days ago         387MB
gcr.io/namesapi-1581010760883/vue-app                 <none>              b1b11f2c9678        4 weeks ago         385MB
gcr.io/namesapi-1581010760883/vue-app                 <none>              a5ef94db2438        4 weeks ago         385MB
gcr.io/namesapi-1581010760883/vue-app                 <none>              23b52253c060        6 weeks ago         385MB
gcr.io/namesapi-1581010760883/vue-app                 <none>              cb03925836a7        2 months ago        384MB
gcr.io/gce-containers/konlet                          v.0.9-latest        da64965a2b28        19 months ago       73.4MB
gcr.io/stackdriver-agents/stackdriver-logging-agent   0.2-1.5.33-1-1      fcfafd404600        22 months ago       548MB

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

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

Спасибо @RaidasGrisk!

Эта проблема безумная

Вы можете создать свой экземпляр с помощью сценария запуска, который очистит неиспользуемые образы докеров:

gcloud compute instances create-with-container my-instance \
  --machine-type f1-micro \
  --metadata startup-script='#! /bin/bash
# Clear old Docker images
docker image prune -af' \
  --zone us-central1-a \
  --container-image gcr.io/my-project/my-image

Кроме того, вы можете удалить неиспользуемые образы Docker со своего компьютера с помощью клиента gcloud:

# Only the first time
gcloud compute config-ssh 

gcloud compute ssh --verbosity=debug my-instance --command "docker image prune -af"
Другие вопросы по тегам