For the past year or so, we’ve been deploying Docker containers behind the firewall and have watched Docker change and mature a lot. The ecosystem has moved crazy-fast to produce a lot of good ideas about what makes a great Dockerfile. But there’s a lot to ingest and the art of crafting a Dockerfile is still young. So, we’ve decided to write and open source a tool to help statically analyze a Dockerfile and alert you to some best practices, optimizations and possible bugs.


Head over to where you can paste in a Dockerfile and see results in realtime. It’s a simple, client-only app – your Dockerfile isn’t sent to our servers or anything. We run it all locally by using our newly shared linter.

Our linter is an opinionated linter. It’s not going to look for a config.toml for a set of rules to parse. There aren’t many options yet; this is designed to work out of the box. We’ve identified 52 checks we’d like to run, and we’ve implemented 26 of them already. I’m sure that there are hundreds more to add, and we will keep adding them.


The core of what we’ve done is here, in this open source npm module that can take a Dockerfile as an input and return an array of suggestions. We added a simple node.js script in the bin folder to run it manually against a local Dockerfile too.

What’s next?

You can run this today against your current Dockerfiles. If you aren’t happy with the results, send us an issue on the Github repo. If you have some ideas on what makes a good Dockerfile, send a pull request.

We love contributions and our goal is just to make better Docker images everywhere.

Leave a Comment