如何从GCR自动部署新容器到GCE并强制实例拉取最新镜像
GCE容器部署强制拉取新镜像方案
- 直接更新现有实例的容器(无需重建实例)
如果你的实例是通过GCE自带的「部署容器」功能创建的,可直接使用gcloud命令更新运行中实例的容器,不会生成新实例:
gcloud compute instances update-container <你的实例名称> \ --zone <实例所在可用区> \ --container-image gcr.io/<你的项目ID>/<你的镜像名称>:latest
命令执行后会自动在现有实例上停止旧容器、拉取最新镜像、启动新容器,全程不需要手动删除旧实例。
- 配置启动脚本实现重启自动拉新
你可以在GCE实例的自定义元数据中添加startup-script字段,内容如下:
#!/bin/bash # 拉取最新镜像 gcloud docker -- pull gcr.io/<你的项目ID>/<你的镜像名称>:latest # 清理旧容器 docker stop <你的容器名> || true docker rm <你的容器名> || true # 启动新容器 docker run -d --name <你的容器名> <其他启动参数> gcr.io/<你的项目ID>/<你的镜像名称>:latest
后续你每次推送新镜像到GCR后,只要重启对应GCE实例,就会自动拉取最新镜像启动容器。
- 操作注意
你之前点击的Deploy to Cloud Run按钮是部署到Cloud Run服务的专用入口,操作GCE实例不需要使用该按钮,直接通过gcloud命令操作即可。建议统一使用latest标签标记最新镜像,避免拉取到旧版本。
内容的提问来源于stack exchange,提问作者Ivan
相关产品推荐
相关产品推荐

