This document compares the four container orchestration frameworks: Docker Engine w/ Swarm Mode, Kubernetes, DC/OS, and ECS.
Feature | Docker | Kubernetes | DC/OS | ECS |
---|---|---|---|---|
Local Development |
||||
Multiple clouds |
AWS |
|||
Service Discovery and Load Balancer |
Docker-compse: DNS |
|
Yes (multiple: DNS-based and proxy-based/L4 load balancer) |
|
Dynamic Scaling |
|
Marathon app spec (instance count) and multiple options |
||
Exposing a service |
Routing mesh |
|
Multiple (direct placement on public agent or, preferred, via Marathon-LB |
|
Run-once job |
|
|
||
Namespace |
|
|
via labels in System Marathon |
|
Global service |
|
|
Unique Attribute |
'distinctInstance' Task Placement Constraint |
Maven |
No |
|||
Volumes |
local persistent volumes as well as external persistent volumes |
|||
Multiple Master |
Yes |
Yes |
Yes (default) |
|
Multi-host networking |
Yes |
Yes |
Yes |
|
Rolling Update |
https://github.com/arun-gupta/docker-scripts/blob/master/rolling-updates.adoc |
https://github.com/arun-gupta/kubernetes-java-sample/tree/master/rolling-update |
||
Container distribution strategies |
Automatic? |
Automatic, but custom schedulers supported. |
Automatic |
|
Affinity |
Labels |
Node (1.2) and Pod (1.4) affinity http://kubernetes.io/docs/user-guide/node-selection/ |
Marathon constraints and pods (in 1.9) |
Via Task Placement Strategies and Constraints |
Constraints |
|
|
||
On-premise |
Yes |
Yes |
Yes |
No |
Cluster across multiple clouds |
Yes |
Yes (partly) |
Yes (agents) |
No (Can span multiple AZ) |
Commercially supported |
Google, Apprenda, Canonical, CoreOS, Cloud RTI others? |
|||
Creating Couchbase Cluster |
blog (one node) |