Jeff Lindsay (creator of Dokku) is one of the most prolific people in the Docker ecosystem.
He not only wrote Dokku and contributed to Flynn, two of the most popular Docker PaaS technologies out there, but he is busy creating technologies right now that we are all likely to adopt within the next 6-12 months.
During this interview, we talked about everything from the very beginning of Docker when Jeff and Solomon started hacking it together, to the latest unreleased open source projects in the Docker world.
Jeff Lindsay, Creator of Dokku
Jeff has been writing and designing software professionally for over 15 years, casually for almost 25 years. I've worked with Twilio, DotCloud/Docker, Transcriptic, Piston Cloud, CommerceNet, NASA Ames, and others to build prototypes, products, and platforms.
He has a large open source portfolio, lots of speaking experience, and a history of starting communities and cultural institutions, including SuperHappyDevHouse and Hacker Dojo.
Can you talk about your contributions to Flynn and how these projects interact with Flynn?
I've been interested in PaaS since Heroku and AppEngine, so I love the idea, but I wanted something hackable. So with Flynn, I imagined it could be like a super-Dokku that is distributed across many servers. I found Daniel Siders and Jonathan Rudenberg and we all had such a close vision that we started collaborating on Flynn together.
What is ambassadord?
The ambassador model is like a gatekeeper for Docker containers to talk to each other across multiple servers. The
ambassadord project is like the ultimate ambassador container so that you only need to run one of these per host server and every other container on that host can use it to route to any other server connected with its own
Can you explain Consulate and Consul and Registrator (formerly Docksul)?
Consul is a service abstraction API on Serf that implements RAFT that creates a consistent key/value store like
etcd. Consulate is distributed discovery and routing mesh for Docker. Registrator is a service registry bridge for Docker (formerly docksul). When you combine registrator, consulate and ambassadord, any Docker container across any host can talk to each other. This is the holy grail for Docker!
You are also working on Duplex, which is similar to libchan. What is Duplex and who should us that?
Duplex is a simple, efficient, extensible application communications protocol and library. It's heavily inspired by ZeroMQ and BERT-RPC, but draws influence from Twitter Finagle, HTTP/2, zerorpc, and Unix pipes. Although heavily inpsired by ZeroMQ and nanomsg, those messaging abstractions work against the goals of Duplex. There are many great features that Duplex emulates, mostly to employ the overall distributed/edge messaging philosophy, and building in connection pools, reconnect logic, edge queuing, and optimizing for high-throughput async usage.
Tell us about Manifold
I got the name Manifold from the Dyno Manifold from Heroku. Manifold is built on Consulate. It is service discovery with a distributed scheduler. The distributed scheduler part is like Apache Mesos. It is like a container compute grid.
What is Configurator?
The idea with Configurator is to create a REST API frontend that will write configuration files to Nginx or Haproxy or Apache for you. This lets developers create robust systems quickly and easily without having to figure out how to write complex configuration file formats.
Here is a list of the projects that are discussed in this podcast.
- discoverd - An API for service discovery as a layer of abstraction on top of
etcdor any other service discovery system like
- ambassadord - A Docker Ambassador to rule them all
- consul - Service discovery and configuration made easy (built on Serf)
- consulate - Easy, distributed discovery and routing mesh for Docker powered by Consul
- registrator - Service registry bridge for Docker (formerly docksul)
- duplex - a simple, efficient, extensible application communications protocol and library. It's heavily inspired by ZeroMQ and BERT-RPC
- configurator - gives configuration files a REST API