首页 > 解决方案 > 如何通过更新容器镜像将容器部署到 gce?

问题描述

我使用以下命令设置我的 CD 以将容器部署到 gce:

gcloud compute instances stop my-awesome-app
gcloud compute instances update my-awesome-app --no-shielded-integrity-monitoring
gcloud beta compute instances update-container my-awesome-app --container-image=docker.io/my-docker-hub-user/my-awesome-app:${IMAGE_TAG}
gcloud compute instances start my-awesome-app

然后实例将停止,替换容器映像并启动。

如果我使用最新图像创建新实例,一切正常。

如果我使用我的 CD 管道进行部署,该实例总是永远挂起(在接收到启动事件后,不会有新的日志记录),永远不会提取新映像,也永远不会启动和运行。

任何人都可以告诉我有什么问题吗?

标签: dockergoogle-cloud-platformgoogle-compute-engine

解决方案


我不会启动和停止我的实例来更新容器。我只是:

gcloud compute instances update-container $instanceName2 --zone $instanceZone --container-image $registry:$BUILD_ID

但是在拉取一个新图像之前,我总是做一个 docker prune 以避免我的磁盘被图像填满:

gcloud compute ssh $instanceName2 --zone $instanceZone --command 'docker system prune -f -a'

对我来说,更好的方法是使用指向我的存储库的模板,并从该模板构建一个托管实例组。通过这种方式,您可以实现零停机部署,并且在 99% 的时间里仍然只有一台机器运行。细节


推荐阅读