/docker-ecosystem-survey

An incomplete survey of the Docker ecosystem.

Apache License 2.0Apache-2.0

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.

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.

Host cluster management

  • All orchestration frameworks provide cluster management one way or the other
  • Docker Machines
  • CoreOS Fleet: initd for containers

Service discovery & configuration

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 high-availability & scaling

  • Kubernetes ReplicationControllers. The reconciler model is great.
  • fig. The fig scale command
  • Flynn. The flynn scale command
  • Deis

Container dependency management

  • CoreOS systemd: ad hoc through unit directives
  • fig
  • Docker Compose
  • 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

Custom network topologies on a single host

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).
  • Fig's Run stage
  • Deis: See this doc
  • Flock?

Container monitoring & resource enforcement

  • Kubernetes cAdvisor
  • LMCTFY

Container data management

  • Flocker from clusterHQ. Data volumes follow container location, via ZFS.

DevOps streamlining & tooling

  • 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 start volumes-from containers of the specified one.
  • 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

Note: some of them run actual containers on 3rd-party cloud providers.

Libraries: libcontainers libchan libswarm (seems dead from github stat as of Dec 2014)

Docker service providers

Useful resources

To be surveyed

TODOs

  • Add more notes to each bullet.
  • Add links.