Navigating the ever-changing Docker ecosystem can be difficult, so we at CenturyLink would like to make it easier for you. A few weeks ago, I wrote about the top 10 startups using Docker. This week we are talking about the top 10 open-source projects using Docker. I will group them to highlight what each project focuses on.
Table of Contents
Although Docker was a technology originally built out of a PaaS (DotCloud), there have been multiple attempts to create micro-PaaS’es out of Docker.
Flynn is one of the most anticipated Docker PaaS’es right now. With nearly 1,000 stars and dozens of forks, this open-source Docker project has not even been released yet. With a
git push deployment to Docker, it is easy to see why there is so much anticipation. Flynn simplifies deploying and maintaining applications. Instead of using complex configuration management systems, Flynn allows self-serve management of containerized deployments, making life easier for ops and developers. Flynn is also different than the other projects on this list because they are a sponsored open-source project. With 14+ sponsors having donated over $80,000, this project is definitely one to watch.
With over 1,300 stars and over 120 forks, Deis is more established than Flynn and also has a
git push deploy style. Deis leverages Chef, Docker, Django, Celery, Heroku Buildpacks, and Slugbuilder to do its magic. Deis comes with out-of-the-box support for Ruby, Python, Node.js, Java, Clojure, Scala, Play, PHP, Perl, Dart and Go. Also, Deis can deploy anything using Heroku Buildpacks, Docker images or Chef recipes. Deis can be deployed on any system including every public cloud, private cloud or bare metal. Deis currently supports automated provisioning on EC2, Rackspace and Digital Ocean. In an upcoming blog post, we will compare Deis and Flynn in more detail.
If you just want the smallest viable
git push to Docker container functionality in the world, take a look at Dokku. From the maker of localtunnel (a super useful utility to reverse-proxy your localhost ports to a public url), this little power-house of an open-source project has the most eye-balls. It is not as feature rich as Deis or Flynn, but it is incredibly easy to install and use on Ubuntu 13 or 12.04 x64.
$ wget -qO- https://raw.github.com/progrium/dokku/v0.2.2/bootstrap.sh | sudo DOKKU_TAG=v0.2.2 bash
Note: Users on 12.04 will need to run
apt-get install -y python-software-properties before bootstrapping stable.
CoreOS is developing best practices for deploying containerized applications to production. It is not a single open-source repository, but rather a collection of many open-source tools that can be used together including
systemd. We have written about generating CoreOS files from Fig files before because getting started with CoreOS can be a daunting experience. The
etcd library is used as a universal key/value store to stitch services together and share service credentials across an entire application. Unlike many of the other projects in this list, CoreOS is both an open-source project and a venture backed startup (which is why CoreOS is also listed in our Top 10 Startups Built on Docker post).
I have written a few times about Fig because it is one of my favorite little utilities for Docker (Auto-Loadbalancing Docker with Fig, HAProxy and Serf and Building Complex Apps for Docker on CoreOS and Fig). Fig lets you write a simple
fig.yml file that lists all the Docker containers your app needs and how they should link together. Once you write the
fig.yml you just
fig up -d and your app will be up and running. This blog is managed by fig right now.
6. Serf – https://github.com/hashicorp/serf
1,652 stars, 91 forks in Mar 2014
“A decentralized solution for service discovery and orchestration that is lightweight, highly available, and fault tolerant”
Although Serf is not Docker specific, it is like jelly to Docker’s peanut butter. Serf is one of my favorite new open-source projects and came from the guys who make Vagrant. I wrote about it a few weeks ago in Decentralizing Docker: How to Use Serf with Docker so you can get a great insight into how to use it with Docker there, but essentially it is a hammer you can use where CoreOS and etcd is a nail-gun. Serf is also really easy to use outside of Docker and can be used in a lot of different ways where etcd and CoreOS are pretty specific tools that aren’t nearly as flexible (though definitely very powerful).
Drone (another project that is both an open source project and a startup) gives you a simple go binary, distributed in a debian file, that gives you a full CI/CD pipeline hooked natively into Docker. Cool, right? Your code never needs to leave your laptop or your company’s network to be tested, which is a huge deal for big company developers who have policies that prevent them from using public hosted services like GitHub and Travis. The other cool part of Drone is that you can deploy the fully tested containers into production and be assured that the exact same environment is used in both locations. Finally, Drone lets you build custom Docker containers with whatever custom binaries and configuration you need, which is way more flexible than most CI platforms today.
Shipyard gives you the ability to manage Docker resources including containers, images, hosts, and more all from a single management interface including: Multi-Host Support, Container Metrics, and a RESTful API. I love this part, to deploy Shipyard, you just run:
$ docker run -i -t -v /var/run/docker.sock:/docker.sock shipyard/deploy setup
Then you should be able to login to http://localhost:8000 and get the pretty UI (more QuickStart docs available). Slick! Being able to visually see all your containers is killer and Shipyard is a great way to do that.
Docker UI is another alternative for Docker container visualization. Like Shipyard, they have a slick single-command for setting it up:
$ docker run -d -p 9000:9000 -v /var/run/docker.sock:/docker.sock crosbymichael/dockerui -e /docker.sock
Then you should be able to login to http://localhost:9000 and start playing around. DockerUI does not appear to support multi-hosts like Shipyard yet, but it provides most of the same functionality you get through the docker command line interface.
This project has been moved into OpenStack’s official Nova release as of Havana, but it is still incredible. The idea that Docker containers can be first class citizens alongside virtual machines is a game changer. As OpenStack deployments become more common and IaaS players start adopting container technologies, we are going to see a great amount of innovation around Docker. Make sure to ask your IaaS provider for first-class Docker and CoreOS support if they don’t have it already.
If you measure the health of an open-source project by the open-source projects created around it, I think it is fair to say that Docker is the picture of health. This article was meant to be more of an overview than an in-depth comparison. In future weeks, we plan to talk more about the differences between some of these technologies like Flynn vs Deis.