With Docker containers fast becoming the standard for building blocks for distributed apps, we’re working with the Docker community to make it easier for users to quickly code and assemble their projects. Official Repos, publicly downloadable for free from the Docker Hub Registry, are curated images informed by user feedback and best practices. They represent a focused community effort to provide great base images for applications, so developers and sysadmins can focus on building new features and functionality while minimizing repetitive work on commodity scaffolding and plumbing.
At DockerCon last June, we announced the first batch of Official Repos which covered many standard tools like OS distributions, web servers, and databases. At the time, we had several organizations join us to curate Official Repos for their particular project, including Fedora, CentOS, and Canonical. And the community responded enthusiastically as well: in the three months since they launched, Official Repos have so grown in popularity that they now account for almost 20% of all image downloads.
Based on the search queries on the Docker Hub Registry and discussions with many of you, we determined that the community wants pre-built stacks of their favorite programming languages. Specifically, developers want to get working as quickly as possible writing code without wasting time wrestling with environments, scaffolding, and dependencies. So we’ve spent the last several months building and curating Official Repos for the eleven most-searched-for programming language stacks. We’ve iterated, tested, and polished, and today we’re sharing them with a wider audience.
Without further ado, we’re pleased to announce the availability of these Official Repos: c/c++ (gcc), clojure, go (golang), hy (hylang), java, node, perl, php, python, rails, and ruby. We’re also happy to announce that Amazon Web Services and the Perl and Hy projects have joined the Official Repos program as contributors.
Under The Hood
For details of these language stacks, please check-out the descriptions and Dockerfiles on the individual repos, but below are some highlights:
First off, you’ll see that most of the language stacks are based on the buildpack-deps image, a collection of common build dependencies including development header packages. This frees users from having to worry about these dependencies – you can just pull the relevant language stack and start coding.
Versions & Tags
Another thing you’ll notice is that each language stack’s Official Repo has multiple versions of the language with a tag for each version. This lets you quickly pull the specific version you need for your project, for example:
$ docker pull java:8u40
Build On ONBUILD
Another cool feature of these language stacks is that, where applicable, they’ve been built with the ONBUILD Dockerfile instruction. So when you use a language stack as your base image, your build will automatically add your application code to your new image. This provides simple automation for your build pipeline while allowing for a clean separation between the language stack and your app’s code and its changes. See the individual language stack descriptions on the Docker Hub Registry for more details about how to take advantage of this feature.
Got feedback? Want to contribute?
While we’ve been working on these for the last couple months, we hope today’s release is just the start, not the end. Like the Docker Engine itself, we think these Official Repos are a good opportunity for the Docker community to collaborate on best practices for these core software building blocks. To this end, each language stack Official Repo has a comments section and its own GitHub repo for submitting bug fixes and feature ideas. There’s also an IRC channel, #docker-library on the Freenode IRC network, where the Official Repo maintainers hang out.
Want your own Official Repo?
For those looking to create and maintain an Official Repo of their own project, today we’re happy to share guidelines for getting started, along with Dockerfile best practices. After prepping your project according to the guidelines, please contact firstname.lastname@example.org to coordinate the process of adding your repo to the collection.
In closing, we want to warmly thank all those in the community who have been providing input and contributions to Official Repos – without you this program wouldn’t and couldn’t exist. We hope everyone finds this latest batch useful and we look forward to your feedback and comments.
Dockerize early and often,
– The Docker Team