• [TBD] • More than a Sandbox, Less than a VM • Lightweight Linux environment • Hermetically sealed, deployable system • Introspectable, runnable artifact • Recently popularized by Docker What is a container?
My Life with Containers I • Solaris Zones, circa 2005 • Shared Hardware Resources • Resource, Fault and Security Isolation • Branded Zones • Now owned by a Database Company Solaris Zones
Everything at Google runs in a container Internal usage: • Resource isolation and predictability • Quality of Services • batch vs. latency sensitive serving • Overcommitment (not for GCE) • Resource Accounting We start over 2 billion containers per week My Life with Containers II
Static application environment = reliable deployments No stress deployment and update Why do developers care? Repeatable, runnable artifact = portability Develop here, run there Pick your cloud solely on its merits Loosely coupled = easier to build and manage Compose applications from micro- services Mix in and extend third party services Why should developers Care?
Managed Base OS Node Container Manager Scheduled Containers Cluster Scheduler Node container management on the Google Cloud Container Optimized VM Image Container health monitoring and restart Declarative Container Manifest
Managed Base OS Node Container Manager Scheduled Containers Cluster Scheduler Cluster container scheduling on the Google Cloud Schedule containers across machines Replication and resizing Service naming and discovery
Container VMs in Google Compute Engine Cloud VMs optimized for Containers Easy way to use Containers on the Google Cloud Platform: • Image preinstalled with: Docker, Node Container Manager • Loads Container Manifest at VM start time • [Soon] Integrate with UI, logging • [Soon] Basic building block for dynamic systems Also used by Managed VMs driven by Google App Engine
Next Steps Launch a container VM: https://cloud.google.com/compute/docs/containers Send us comments/ideas: Discussion group: groups.google.com/forum/#! forum/google-containers IRC: #google-containers on irc.freenode.net Stack Overflow: Use "google-compute-engine" and "docker" tags
docker build using google/docker-registry container Google Compute Engine instance your laptop docker run gcloud deploy start update using google/docker-registry container private Google Cloud Storage bucket Google App Engine Your awesome docker image Your awesome docker image docker container docker push docker pull Behind the Scenes
App Engine for Docker Simple to manage Private Registry Bucket APIs and SDK Load Balancing Autoscaling Docker for App Engine Use any library Run any code Transparency New Runtimes, build your own! +
Kubernetes the open source cluster manager from Google github.com/GoogleCloudPlatform/kubernetes Runs on ● your dev machine ● your own hardware ● cloud Microsoft, IBM, Red Hat, Docker, Mesosphere, SaltStack, CoreOS and VMware have joined the Kubernetes project
Pods Pod Container Container Container Container • Tightly coupled group of containers • Unit of scheduling, deployment and replication • Shared storage volumes • Shared Network and Port namespace
Machine Machine Replication Controller • “Pod Factory” • Creates and manages a set of pods • Ensures that required number of Pods are running • Creates and kills Pods as required ReplicationController Template Pod Container Container Container Container Pod Container Container Container Container Pod Container Container Container Container Pod Container Container Container Container