谷歌云代理商:我想知道,如何在谷歌云Compute Engine上部署一个基于Docker的容器化应用?

53 阅读4分钟

TG:@yunlaoda360

谷歌云平台(Google Cloud Platform)作为全球领先的云服务提供商,在容器化应用部署方面具有以下功能:

  • 原生Kubernetes支持:谷歌是Kubernetes的创建者,提供最成熟稳定的Kubernetes引擎(GKE)
  • 全球网络基础设施:依托谷歌全球光纤网络,确保应用低延迟访问
  • 无缝集成生态:与Container Registry、Cloud Build等工具深度集成
  • 灵活的计费方式:按秒计费、持续使用折扣,成本效益显著
  • 企业级安全:默认加密、VPC服务控制、安全指挥中心等多层防护

部署准备:环境配置与工具安装

在开始部署前,需要完成以下准备工作:

1. 创建谷歌云项目

通过Google Cloud Console创建新项目,并启用Compute Engine API、Container Registry API等相关服务。

2. 安装并配置gcloud CLI

3. 准备Docker镜像

确保应用已完成容器化,拥有可用的Dockerfile

详细部署步骤

步骤一:构建并推送Docker镜像

使用Google Container Registry(GCR)存储和管理Docker镜像

步骤二:创建Compute Engine实例

通过gcloud命令创建预装Docker的VM实例:

gcloud compute instances create-with-container my-app-instance \
    --container-image=gcr.io/[PROJECT-ID]/my-app:v1 \
    --machine-type=e2-medium \
    --tags=http-server,https-server \
    --boot-disk-size=20GB \
    --zone=us-central1-a

jimeng-2025-10-29-2938-创建一个具有未来科技感的云服务器服务宣传图。主视觉是发光的白云和谷歌云相间的服务....png

步骤三:配置网络与防火墙

开放应用所需的端口:

# 允许HTTP流量
gcloud compute firewall-rules create allow-http \
    --allow=tcp:80 \
    --target-tags=http-server

# 允许HTTPS流量  
gcloud compute firewall-rules create allow-https \
    --allow=tcp:443 \
    --target-tags=https-server

# 允许自定义应用端口
gcloud compute firewall-rules create allow-app-port \
    --allow=tcp:8080 \
    --target-tags=app-server

步骤四:验证部署状态

检查实例运行状态和容器日志:

# 查看实例状态
gcloud compute instances list

# 查看容器日志
gcloud compute instances get-serial-port-output my-app-instance \
    --zone=us-central1-a

# 直接访问实例测试
gcloud compute ssh my-app-instance --zone=us-central1-a

高级配置与管理

1. 使用实例模板实现自动扩展

# 创建实例模板
gcloud compute instance-templates create-with-container my-app-template \
    --container-image=gcr.io/[PROJECT-ID]/my-app:v1 \
    --machine-type=e2-medium \
    --tags=http-server

# 创建托管实例组
gcloud compute instance-groups managed create my-app-group \
    --base-instance-name=my-app \
    --template=my-app-template \
    --size=3 \
    --zone=us-central1-a

# 配置自动扩缩容
gcloud compute instance-groups managed set-autoscaling my-app-group \
    --max-num-replicas=10 \
    --min-num-replicas=3 \
    --target-cpu-utilization=0.75 \
    --zone=us-central1-a

2. 配置负载均衡器

# 创建健康检查
gcloud compute health-checks create http my-app-health-check \
    --port=8080 \
    --request-path=/health

# 创建后端服务
gcloud compute backend-services create my-app-backend \
    --protocol=HTTP \
    --health-checks=my-app-health-check \
    --global

# 添加后端实例组
gcloud compute backend-services add-backend my-app-backend \
    --instance-group=my-app-group \
    --instance-group-zone=us-central1-a \
    --global

# 创建URL映射和代理
gcloud compute url-maps create my-app-load-balancer \
    --default-service=my-app-backend

# 创建前端转发规则
gcloud compute target-http-proxies create my-app-http-proxy \
    --url-map=my-app-load-balancer

gcloud compute forwarding-rules create my-app-frontend \
    --target-http-proxy=my-app-http-proxy \
    --ports=80 \
    --global

3. 监控与日志管理

利用Google Cloud Operations Suite(原Stackdriver)监控应用性能:

# 查看监控指标
gcloud monitoring dashboards create --config-from-file=dashboard.json

# 设置告警策略
gcloud alpha monitoring policies create \
    --policy-from-file="alert-policy.yaml"

最佳实践建议

  • 镜像管理:使用语义化版本标签,定期清理旧镜像以节省存储成本
  • 安全加固:为服务账户分配最小权限,启用Shielded VM增强安全性
  • 成本优化:使用抢占式实例处理无状态工作负载,利用承诺使用折扣
  • 高可用设计:在多区域部署实例,结合全球负载均衡实现故障转移
  • CI/CD集成:配置Cloud Build实现自动化构建和部署流水线

故障排除常见问题

问题现象可能原因解决方案
实例创建失败配额不足、镜像不存在检查配额限制,确认镜像已成功推送至GCR
应用无法访问防火墙规则未配置验证防火墙规则和目标标签匹配
容器启动失败资源不足、配置错误检查容器日志,调整机器类型或资源配置

总结

在谷歌云Compute Engine上部署Docker容器化应用是一个高效且可靠的选择。通过本文详细的步骤指南,您可以从零开始完成整个部署流程,包括环境准备、镜像构建、实例创建、网络配置以及高级的自动扩缩和负载均衡设置。