A fishnet is made up of a lot more holes than strings, but you can’t therefore argue that the net doesn’t exist. Just ask the fish.
Jeffrey Kluger
Docker – the amount of words written about this cool kids’ tool probably already surpassed the old editions of Encyclopedia Britannica. And that is for a reason – Docker definitely changed something in the way we think about software nowadays, even if just through introducing old concepts in the new, more shining light. And like every big new idea in the modern IT, it brings not only sailors, who will try to reach the shore. There are also carpenters, who are not that well known, but who build tools used by the former.
In this article, I would like to present five interesting projects which, in my opinion, are useful, interesting or just solely fun.
Docker-Mon
There are a few monitoring services for Docker Images (I especially like Shipyard), but I don’t think any of them is that cool! Programmers love having everything accessible inside the shell. And what would you say for the whole dashboard for the Docker containers with graphs and statistics available in your console?
If you are still using vim and you spend majority of your day in the terminal, Docker-mon is for you. It’s based on blessed-contrib, wonderful shell-centered dashboard framework. The important fact is that if you want to use it, you need to have Docker in version higher than 1.5 since Docker-Mon uses the new docker stats feature.
Docket
For a long time the BitTorrent technology was considered just a tool for the pirates. There is a grain of truth in this statement, however, the Torrent protocol can be used in variety of projects, e.g. gaining quite good traction with BitTorrent Sync or Docket.
Docket is a distributed docker registry based on Torrents. It gives us opportunity to make multi-instance deployment by peer-to-peer connection. The project works quite nice for a result of 48 hour hackathon (Gopher Gala Golang). The creators praise their tool for being really, really fast. I’m not convinced that Torrents are not the most reliable way of deploying your code to production but definitely it’s a clever way of using a well-know technology in a brand new way.
Passenger-Docker
It’s definitely the best known of all projects I wanted to show you, but still not as widespread as it should be. Phusion Passenger is an established WebServer used mainly (but not only) by Rails developers. It’s main goal is to create the most comfortable environment for the developers to run their application. A similar idea stood behind passenger-docker project – to create sensible default base image for the developers who want to use Docker in their production environment. It’s highly opinionated and sometimes goes against the core ideology of containers (one container – one process), but where people argue about the foundations, Passenger-Docker just does the job – and it’s my container-of-choice for Node.js and Rails projects.
dockerfile_lint
I suppose that every professional JavaScript developer uses linters. There is a variety of them and they are an important part of building a tool chain from the front. They are especially useful when many developers are working on a common codebase. Yet it never gained traction with languages other than JS. And this probably the reason why you have never heard of Dockerfile Linter – which is by the way a linter for the Dockerfile.
I’m not sure if there are any projects that would really need it but the project is interesting, it has a nice YAML based configuration and nice choice of rules. Definitely it’s worth a look if clarity of your WHOLE codebase is that important for you.
lein-uberimage
This will be the hipster-one but it’s one of my definite favourites. I really like Clojure – it’s an interesting language which lets my mind stay flexible even on simple array operations. Yet I assume that you will never do a real Clojure deployment. Should I be wrong, this will be a project for you.
This plugin for Leiningen, Clojure’s incredible build tool, works in similar manner to uberjar but instead of creating jars, the it creates Docker image with your Clojure application.
And a small digression: Docker is a quite nice tool to try out new technology because you don’t need to negotiate with your Ops that hard – you just provide them with images of whatever exotic tool you want.
Not all of these tools are a must-have for your next project but I think they show the variety of the Docker ecosystem. It’s a really good platform for all carpenters around the world.
We built the greatest shipping tonnage that the world has ever seen,
And the only life we’ve known is in the shipyard.
Sting