SlideShare a Scribd company logo
So many Docker platforms, so little time…
Michele Leroux Bustamante
Cofounder / CIO Solliance
Microservices / Security Architect
@michelebusta
2
Frequently
Asked
Questions
#1
How do I know
if I need an
orchestration
platform?
#2
How do I
CHOOSE
the right
approach or
platform?
Considerations
Deployment scenarios
Single container / instance
Classic load balancing
Orchestration platforms at scale
Features
Scheduling and resource constraints
Load balancing and networking
Service discovery
Recovery and self-healing
Auto-scale
Overall manageability
In ~ 60 minutes…
Docker things
Quick review of Docker / container lifecycle
Docker-compose, networking, DNS
Deploying containers (Azure Container Instance)
Platform things
Scheduling and constraints (Docker Swarm / Azure Container Service)
Orchestration / management UI intro (Docker Enterprise Edition)
Load balancing, discovery (DC/OS / Azure Container Service)
Recovery, self-healing, auto-scale (Amazon ECS, Kubernetes / Google Container
Engine)
Quick review, Docker things
DEMO
Docker Compose
Run multi-container applications
Create a service definition file
YML (YAML) file “docker-compose.yml”
Defines:
Container image
Ports
Networks
Volumes
Environment variables
Configuration
Image Registry
Local
Machine
Container
Registry
Push
Images
Image
Repo
Latest
Version Info
Repository tags
Promotion tags
Tagged
Images
Images
Build
Images
Code
Dockerfile
Automated Image Builds
GitHub /
TFS
CI Tool
Container
Registry
Build
Images
Pull
Latest
Push
Images
Service
Image
Repo
Latest
Version Info
Repository tags
Promotion tags
Dockerfile
Checkin
Automate or
manually
execute build
Service
Repo
Tagged
Images
Push images and deploy services
DEMO
.NET Developer Days - So many Docker platforms, so little time...
.NET Developer Days - So many Docker platforms, so little time...
What does deployment topology
look like?
Containers and VMs
Azure, AWS, Google all support this with IaaS
Docker-enabled VMs
Load balanced
Azure PaaS options
App Service with Linux container support
Azure Container Instance
VM Topologies
Single VM
We’ll be ok with a single
instance. Containers
start fast.
NO!
VM Topologies
Single VM
Load balanced VMs
IaaS
Web Apps
Load balanced VMs
VM Topologies
Single VM
Load balanced VMs
IaaS
Web Apps
Load balanced VMs
Azure Container Instance
Serverless
Azure Container Instance
DEMO
Azure Container Instance
Azure Container Instance
.NET Developer Days - So many Docker platforms, so little time...
VM Topologies
Single VM
Load balanced VMs
IaaS
Web Apps
Load balanced VMs
Azure Container Instance
Serverless
Multiple Containers per VM
Reverse proxy / router per VM
Scheduling Services
Scheduling Services
Now the fun begins…
Container Platforms / Considerations
Platforms
• Amazon ECS
• Google Container
Engine
• Azure Container
Service
• Mesosphere DC/OS
• Kubernetes
• Docker Enterprise
Edition
Infrastructure
• Management cluster
• Agent node cluster
• Proxy / routing/
discovery
infrastructure
• Docker registry
Core Features
• Service registration
and discovery
• Load balancing
• Routing
• Auto-scaling
• Self-healing
• Upgrade, rollback,
recovery
• Versioning
Platform Master and Agent clusters
LEADER
Master
Nodes
/ Cluster
Agent
Nodes
Scheduling and constraints
Docker Swarm
Docker Swarm
Scheduling
LEADER
Master
Nodes
/ Cluster
Agent
Nodes
Schedule services
Pull image
Run container
Service
Description
### making use of the swarm cluster
#Show swarm cluster info
$ docker -H tcp://0.0.0.0:2375 info
#Show containers
$ docker -H tcp://0.0.0.0:2375 ps
#Run container on cluster
$ docker -H tcp://0.0.0.0:2375 run -d -p 8080:8080 dasblonde/helloworlddocker
$ docker -H tcp://0.0.0.0:2375 ps
#Run another container, same port (gets different node)
$ docker -H tcp://0.0.0.0:2375 run -d -p 8080:8080 dasblonde/helloworlddocker
$ docker -H tcp://0.0.0.0:2375 ps
###container constraints (port)
#Run another container, same port (no more 8080 ports available, error)
$ docker -H tcp://0.0.0.0:2375 run -d -p 8080:8080 dasblonde/helloworlddocker
$ docker logs --tail 20 containers_swarm_1
#Make request to containers
$ curl 10.0.0.4:8080
$ curl 10.0.0.7:8080
#container constraints (image affinity, memory)
#Memory affinity and image affinity
$ docker -H tcp://0.0.0.0:2375 run -d -m 3G dasblonde/helloworlddocker
$ docker -H tcp://0.0.0.0:2375 info
$ docker -H tcp://0.0.0.0:2375 run -d -e affinity:image==dasblonde/helloworlddocker
dasblonde/helloworlddocker
#Failure due to applied constraints
$ docker -H tcp://0.0.0.0:2375 run -d -m 3G -e
affinity:image==dasblonde/helloworlddocker dasblonde/helloworlddocker
#Node allocation with available memory
$ docker -H tcp://0.0.0.0:2375 run -d -m 2G dasblonde/helloworlddocker
$ docker -H tcp://0.0.0.0:2375 ps
Docker Swarm / scheduling and resource constraints
DEMO
.NET Developer Days - So many Docker platforms, so little time...
.NET Developer Days - So many Docker platforms, so little time...
.NET Developer Days - So many Docker platforms, so little time...
Resource Constraints
Implicit constraints
Physical hardware
Technical limitation (port reuse)
Explicit constraints
CPU, memory, IO
Determines node distribution
Enables containment of resource usage
Multi-tenancy
Avoiding noisy neighbor
Orchestration / Management
Native UI
Docker Enterprise Edition
Docker EE Trial
DEMO
Load balancing, discovery
Mesosphere DC/OS /
Azure Container Service
Mesos / Marathon
DC/OS and Azure Container Service
Load balancing / discovery
DEMO
Recovery, self-healing, auto-
scale
Amazon ECS
Kubernetes / Google Container
Engine
.NET Developer Days - So many Docker platforms, so little time...
Public
ALB
Route 53
DNS
Availability Zone A
Availability Zone B
Availability Zone C
Public Subnet
Private Subnet
Private Subnet
ECS Nodes
ECS Nodes
Private Subnet
ECS NodesEC2 Nodes
Public Subnet
EC2 Nodes
Public Subnet
EC2 Nodes
Private
ALB
Server Density
Server Density
Room for Upgrades, Restarts
What about me???
Adding Nodes
What about me???
Redistribution of Instances
What about me???
Room for New Instances
What about me???
AWS EC2 Container Services (ECS)
Self healing, auto scale, health checks
DEMO
.NET Developer Days - So many Docker platforms, so little time...
.NET Developer Days - So many Docker platforms, so little time...
.NET Developer Days - So many Docker platforms, so little time...
Kubernetes / Google Container Engine
Job execution
DEMO
Review
Docker without an orchestration platform
Features of orchestration platforms we care about
Load balancing, networking
Scheduling, discovery
Recovery, self healing
Auto scale
A look at
Docker Swarm / Docker EE
Mesosphere DC/OS / Azure Container Service
AWS
Kubernetes / Google Container Engine
.NET Developer Days - So many Docker platforms, so little time...

More Related Content

.NET Developer Days - So many Docker platforms, so little time...

Editor's Notes

  1. Docker is a key player in the microservices movement and is arguably the leader in containerization technology. That said, there are many ways to “do Docker”. Between the leading cloud providers AWS, Azure, and Google; plus other platform stacks like Docker/Swarm, Apache Mesos – DC/OS, and Kubernetes; it can get confusing. In this session, Michele will bring her customer experiences building solutions across most of these platforms – to provide you with the highlights, the architecture topologies, and some perspective on the way she helps her customers choose the right platform for their cloud, on premise or hybrid solutions.