Awesome
Docker Ecosystem Survey
An incomplete survey of the Docker ecosystem. Many products are yet to be surveyed. Comments and pull requests welcome!
Most products mentioned here are in Beta or even Alpha. Competition is fierce and churn is high. Dead products will be removed from the list and new ones will be added.
Orchestration frameworks (i.e. PaaS software for Docker)
Note: Such a framework should include at least container management, cluster management, and container placement functions. Example optional functions are fault-tolerance, replication, monitoring, development workflow automation, container dependency management, data store services, container versioning, etc.
- Kubernetes: See architecture.
- Kubernetes on Mesos: "Mesos provides the fine-grained resource allocations for pods across nodes in a cluster, and can make Kubernetes play nicely with other frameworks running on the same cluster resources."
- OpenShift: uses Kubernetes
- Mesosphere (Mesos + Marathon + Chronos)
- Docker Machine, Swarm, & Compose
- OpenStack Docker
- SmartDataCenter from Joyent
- Deis from OpDemand: Uses CoreOS (fleet, etcd, etc.). Provides streamlined development/deployment workflow. Doesn’t support container dependency
- Flynn: Uses etcd. Similar to Deis. A general PaaS system. Not Docker specific.
- dokku: a mini-Heroku for Docker (sponsored by Deis).
- Serf from maker of Vagrant: not Docker specific. http://www.centurylinklabs.com/decentralizing-docker-how-to-use-serf-with-docker/
- Tsuru: http://blog.tsuru.io/architecture/2014/04/04/running-tsuru-in-production-scaling-and-segregating-docker-containers.html
- Decking
- Flocker. Mainly designed for data volume management. User specifies container-to-host mapping.
- Rancher
- Clocker
- paz
- galazy
- Lattice from Pivotal
- weave.works
- Empire. A control layer on top of Amazon EC2 ECS.
- gantryd Framework for easy management of docker-based components across machines
- containership.io A simple container management platform.
Host OSes designed for Docker
- CoreOS. Use systemd to manage container upstarts and dependencies, etcd for service discovery, and CoreUpdate for operating system updates.
- SmartOS
- Ubuntu Core
- Project Atomic from Redhat. Used by OpenShift.
- Rancher OS. All system services are implemented as containers and therefore "eliminate the need for complex init systems like systemd". Rancher OS runs two Docker daemons: system docker and user docker. It does not use systemd.
- Project Photon from VMWare. It is "optimized for VMware vSphere and VMware vCloud Air environments."
Host cluster management
- All Docker orchestration frameworks (see Section 1) provide cluster management one way or the other
- Docker Machine
- CoreOS Fleet: initd for containers
Service discovery & configuration
- Consul: comparison to other software: http://www.consul.io/intro/vs
- Kubernetes: No dynamic service discovery yet. Advocate for static port allocation.
- CoreOS etcd
- ZooKeeper
- doozerd: dead. https://news.ycombinator.com/item?id=6366665
- Serf: decentralized etcd
- SmartStack from airbnb
Container placement
- Mesosphere Marathon
- CoreOS Fleet: Only for initial placement. Use systemd as underlying tool. Features: X-Fleet:Conflicts, global units, unit multi-instantiation, machine metadata match.
- Docker Swarm
- All orchestration frameworks provide container placement
Container security
- Project Lightwave from VMWare
Container high-availability & scaling
- Kubernetes ReplicationControllers. The reconciler model is great.
- fig. The
fig scale
command - Flynn. The
flynn scale
command - Deis. The
deis scale
command
Container dependency management
- CoreOS systemd: ad hoc through unit directives
- Docker Compose (formerly fig)
- Kubernetes Services concept: decouples inter-dependent containers and doesn’t allow explicit dependency declaration
- Maestro: seems dead.
- Maestro NG
- Panamax from CenturyLink: Application templating. Have a nice Web UI. “makes deploying complex containerized apps as easy as Drag-and-Drop."
- Procfile: used at Heroku and by Flynn and Deis.
- Marathon
Container inter-networking across hosts
- Kubernetes networking (https://github.com/GoogleCloudPlatform/kubernetes/blob/master/docs/ovs-networking.md)
- systemd in CoreOS: %H specifiers, written to etcd, and use sidekicks to monitor downtimes
- CoreOS Flannel: can be used by Kubernetes: https://github.com/coreos/flannel#flannel
- Weave
Custom network topologies on a single host
- Pipework
- An example of using Docker to simulate complex topologies: https://github.com/brandon-rhodes/fopnp/tree/m/playground
Solomon proposed to support VXLAN from the Docker core.
Container scheduling (i.e. cron for Docker)
- Mesosphere Chronos
Container updates & versioning
- CoreOS CoreUpdate (paid service): mainly server-side implementations. Client side requires non-trivial integration work (We can use standard docker tag/pull mechanisms instead).
- Docker-compose's Run stage
- Deis: See this doc
- Flock?
Container monitoring, troubleshooting & resource enforcement
- sysdig
- Kubernetes cAdvisor
- LMCTFY
Container data management
- Flocker from clusterHQ. Data volumes follow container location, via ZFS.
DevOps streamlining & tooling
- docker-compose (was fig)
- In my own experience with OSX/boot2docker,
fig up
can be quite slow (in the matter of tens of seconds) with about 20 containers. fig up <container>
doesn't startvolumes-from
containers.
- In my own experience with OSX/boot2docker,
- Crane
- Deis
- Flynn
- Modit: for staging.
- Shippable: for testing & deployment
- docker-cmd: manage docker commands with JSON. https://github.com/iorga-group/docker-cmd. seems dead?
Image hosting companies (i.e. private registries)
- Quay.io from CoreOS
- Docker Hub Enterprise
- Private Docker registries using the “registry" docker image.
Container hosting companies
- AWS Container Service
- Google Container Engine
- Rackspace
- Orchard
- tutum
- Joyent
- StackDock
- SailAbove
- Cloud66
- Giant Swarm
- InstaDocker
- [sloppy.io]{http://sloppy.io/}
Professional service providers
Useful resources
- CenturyLink Labs: Covers Docker related news and tutorials.
- The 12-factor app: Principles of building Docker apps.
- container42.com: A Docker blog.
- The Docker Book: A book to learn Docker.
To be surveyed
- Products from this mind map.
- crane
- Shipyard
- Cloud Foundry (Diego)
- Helios
- Centurion
- Shipper
- Flocker
- Panamax from CenturyLink
- Docker Engine for SmartDataCenter
- OpenStack Docker
- Serf
- Tsuru
- YARN?
- Decking
- Geard from Redhat. Core of OpenShift.
- goclouder
- IndiePaaS
- apcera
TODOs
- Add more notes to each bullet.
- Add links.