The Future of Docker
Jeff Lindsay, creator of Dokku and early Docker contributor, discussed in an interview by CenturyLink the Docker related projects he is working on, and how they aim to solve the problems involved in a Docker-based service oriented architecture.
Jeff also collaborates with Flynn, creating a Heroku-like, next generation open source Platform as a Service (PaaS). His goal is to use containers as services instead of virtual machines, following the examples of PaaS services like Heroku:
I really want containers to ideally be appliances all the time. [...] The way people use containers is more like SaaS, so when you run this container is going to give you an API that you can use to manage it and reconfigure it, you don't have to go and change configuration files. [...] I like everything to just have an API.
Several projects were created around Docker to facilitate building a service oriented architecture.
Discoverd is a simple but powerful service discovery system, currently backed by Etcd, but can be extended to use ZooKeeper or other distributed consistent stores. Projects like Consul or Etcd are a primitive for service discovery, while Discoverd provides an API on top of it, more specific to service discovery, and pluggable.
Ambassadord is an implementation of the ambassador pattern for Docker. Allows connecting Docker containers across hosts, supporting static forwards, DNS-based forwards or Consul+Etcd based forwards. With Ambassadord only one ambassador is needed in the cluster, using iptables tricks it can figure out where to go based on port.
Registrator (formerly Docksul) is a service registry bridge for Docker. Watches for events of containers going up and down, inspects them and registers them with Consul or Etcd, working across hosts.
Consulate is a distributed discovery and routing mesh for Docker powered by Consul, Ambassadord, and Registrator. Consulate runs in the host and then any container can talk to any other containers in the cluster. It is an alternative to software defined networks, using service discovery.
Duplex is a simple application communications protocol and library, intended to run RPC in a brokerless messaging architecture, heavily inspired by ZeroMQ. Duplex will allow running RPC on top of libchan, Docker's lightweight networking library, with full RPC semantics.
Configurator turns older software with configuration files, like Nginx, Haproxy or Apache, into appliances. It is an alternative to confd, that can be run without a central store. It exposes a REST API that can be used programmatically to change the configuration of these services.
Jeff is also working on Manifold, a service discovery and distributed scheduler built on Consulate. It is an alternative to Apache Mesos, simplifying the conceptual model, but it is extensible and hackable. It allows defining strategies on how to place containers in a cluster, similar to CoreOS Fleet, but without the Systemd ties.