DEV Community

Abhay Singh Kathayat
Abhay Singh Kathayat

Posted on

Docker in Google Cloud: Running Containers with GKE, Cloud Run, and GCE

Docker in Google Cloud

Google Cloud Platform (GCP) offers several powerful tools for deploying, managing, and scaling Docker containers in the cloud. With services like Google Kubernetes Engine (GKE), Cloud Run, and Google Compute Engine (GCE), Google Cloud makes it easy to leverage Docker containers for modern, cloud-native applications.


1. Docker with Google Kubernetes Engine (GKE)

Overview

Google Kubernetes Engine (GKE) is a fully managed Kubernetes service for running Docker containers at scale. It handles the complexity of Kubernetes clusters, providing automated cluster management, monitoring, scaling, and more.

Key Features

  • Fully Managed Kubernetes: GKE automates cluster setup, scaling, and maintenance.
  • Scaling: Autoscaling for both pods and nodes.
  • Integrated with GCP: GKE integrates with other Google Cloud services like Cloud Monitoring, Cloud Logging, and Cloud Identity.

Steps to Deploy Docker Containers on GKE

  1. Create a Google Cloud Project:
   gcloud projects create my-gke-project
Enter fullscreen mode Exit fullscreen mode
  1. Enable GKE API:
   gcloud services enable container.googleapis.com
Enter fullscreen mode Exit fullscreen mode
  1. Create a Kubernetes Cluster:
   gcloud container clusters create my-cluster --zone us-central1-a
Enter fullscreen mode Exit fullscreen mode
  1. Configure kubectl (Kubernetes CLI):
   gcloud container clusters get-credentials my-cluster --zone us-central1-a
Enter fullscreen mode Exit fullscreen mode
  1. Deploy Docker Container: First, create a Kubernetes deployment configuration (deployment.yaml):
   apiVersion: apps/v1
   kind: Deployment
   metadata:
     name: my-app
   spec:
     replicas: 3
     selector:
       matchLabels:
         app: my-app
     template:
       metadata:
         labels:
           app: my-app
       spec:
         containers:
           - name: my-container
             image: your-docker-image
             ports:
               - containerPort: 80
Enter fullscreen mode Exit fullscreen mode

Then, deploy to GKE:

   kubectl apply -f deployment.yaml
Enter fullscreen mode Exit fullscreen mode
  1. Expose the Application: To expose the deployment publicly:
   kubectl expose deployment my-app --type=LoadBalancer --name=my-app-service
Enter fullscreen mode Exit fullscreen mode

Use Case

GKE is ideal for running complex containerized applications that require high scalability, robust orchestration, and multi-container deployments.


2. Docker with Google Cloud Run

Overview

Google Cloud Run is a fully managed compute platform that automatically scales containerized applications. Cloud Run abstracts away all infrastructure management, making it easy to deploy Docker containers directly.

Key Features

  • Serverless: Runs containers without managing servers or clusters.
  • Automatic Scaling: Automatically scales from zero to thousands of instances based on incoming traffic.
  • Integrated with GCP: Seamlessly integrates with Cloud Pub/Sub, Firestore, BigQuery, and more.

Steps to Deploy Docker Containers on Cloud Run

  1. Enable the Cloud Run API:
   gcloud services enable run.googleapis.com
Enter fullscreen mode Exit fullscreen mode
  1. Build Your Docker Image: First, ensure your Docker image is built and pushed to Google Container Registry (GCR) or Artifact Registry:
   docker build -t gcr.io/[PROJECT-ID]/my-app .
   docker push gcr.io/[PROJECT-ID]/my-app
Enter fullscreen mode Exit fullscreen mode
  1. Deploy to Cloud Run: Deploy the container to Cloud Run using:
   gcloud run deploy my-app \
     --image gcr.io/[PROJECT-ID]/my-app \
     --platform managed \
     --region us-central1 \
     --allow-unauthenticated
Enter fullscreen mode Exit fullscreen mode
  1. Access the Application: Cloud Run will provide a public URL once deployment is complete.

Use Case

Cloud Run is perfect for serverless applications where you don't want to manage infrastructure, and your workloads can scale based on traffic demands.


3. Docker with Google Compute Engine (GCE)

Overview

Google Compute Engine (GCE) allows you to create and manage virtual machines (VMs). You can use Compute Engine to run Docker containers directly on VMs, providing more control over infrastructure and resource allocation.

Key Features

  • Full Control: Full control over VM configuration and networking.
  • Customizable VMs: Choose the right VM size, type, and region.
  • Integration with GCP: Easily integrates with other services like Google Cloud Storage, BigQuery, and Cloud Monitoring.

Steps to Run Docker Containers on Google Compute Engine

  1. Create a Google Compute Engine VM:
   gcloud compute instances create my-vm --zone us-central1-a --image-family debian-10 --image-project debian-cloud
Enter fullscreen mode Exit fullscreen mode
  1. SSH into the VM:
   gcloud compute ssh my-vm --zone us-central1-a
Enter fullscreen mode Exit fullscreen mode
  1. Install Docker on the VM (if not pre-installed):
   sudo apt-get update
   sudo apt-get install -y docker.io
Enter fullscreen mode Exit fullscreen mode
  1. Run Docker Containers: Now you can run Docker containers on the VM:
   sudo docker run -d -p 80:80 your-docker-image
Enter fullscreen mode Exit fullscreen mode

Use Case

Google Compute Engine is ideal when you need full control over the underlying infrastructure and prefer managing Docker containers on dedicated VMs.


Comparison of GKE, Cloud Run, and GCE

Feature Google Kubernetes Engine (GKE) Google Cloud Run Google Compute Engine (GCE)
Infrastructure Managed Kubernetes Cluster Serverless Containers Virtual Machines (VMs)
Scaling Auto-scaling, manual scaling Auto-scaling from 0 Manual scaling
Use Case Complex, multi-container apps Simple, stateless apps Full control over infrastructure
Management Complexity High Low Medium

Conclusion

Docker in Google Cloud provides several solutions to suit different needs:

  • GKE is best for containerized microservices applications requiring orchestration and scaling.
  • Cloud Run is ideal for serverless applications that automatically scale and need minimal management.
  • Compute Engine (GCE) offers full control over VMs and infrastructure, making it suitable for complex or legacy workloads.

Whether you’re looking for a fully managed solution with minimal management (Cloud Run), container orchestration at scale (GKE), or more control over the infrastructure (GCE), Google Cloud has a service tailored to your needs.

Follow me on Twitter for more updates on Docker and Google Cloud! 🚀


Top comments (0)