.NET Developer Days - So many Docker platforms, so little time...
- 1. So many Docker platforms, so little time…
Michele Leroux Bustamante
Cofounder / CIO Solliance
Microservices / Security Architect
@michelebusta
- 3. #1
How do I know
if I need an
orchestration
platform?
- 5. 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
- 6. 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)
- 8. 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
- 10. 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
- 15. 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
- 17. We’ll be ok with a single
instance. Containers
start fast.
NO!
- 24. 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
- 28. 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
- 33. ### 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
- 34. ###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
- 35. #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
- 48. 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
- 60. 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
Editor's Notes
- 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.