Skip to Content

Yak Coiffure: Towards a better CentOS 7 Docker RPM

And oh yeah, I started a Yum repo for CentOS 7 packages

Posted on 3 mins read

This post should be treated as an historical artifact. It probably contain broken external links and it may no longer reflect my views or opinions.

This article is now historical and should be considered out of date.

Packages?CentOS Extras has updated right past my repo, and now tracks Docker releases very closely. The details of this are available on the CentOS Wiki. As such, devel­opment of the Orange Fort Docker package is suspended as it is no longer relevant. This is a good thing! The package provided by Extras should simply upgrade an existing Orange Fort package with no conflicts or weirdness – if it doesn’t, that’s a bug and you should tell me!

Original post

Let me cut right to the point: The Docker RPM provided by CentOS ‘Extras’ repos­itory is old. How old? Version 0.11.1 old. While the code was only tagged 0.11.1 on May 7 2014, there have been 8 releases since then.

After seeing that a friend of mine had worked up a rough go at a FPM recipe for a current version of Docker, I said “we can do this better.”

I do. I really do. It’s a super handy way to take some­thing, anything, and shove it into a distrib­utable native package. But I’m captain of the local Pedant Squad and FPM is as easy to abuse as it is to use. So… one thing led to another, Bob’s your uncle, and oh hey, I packaged up Docker 1.2.0 as a nice, tidy RPM with a nice, tidy SRPM, and a corre­sponding nice, tidy Spec file.

Wait… what’s wrong with the Docker RPM in EPEL?

Simply put, it’s old. Docker 0.11.1 is lacking a lot of features that you’d expect Docker to have – like Dock­erHub. And the spec file builds Docker from source, which is exactly what every upstream or EPEL RPM does (and that’s generally OK).

But Docker is a little bit different because it’s written in Go, and typi­cally distributed as a single static mono­lithic executable (one of the real strengths of Go binaries, I think). And because Go has all sorts of weird and wild depen­dency reso­lution quirks, there’s a real chance that the resultant binary you’re getting can be markedly different than the binary that the upstream authors intended. Also, ‘latest’ is probably the version of Docker that you’re going to want to use because if you’re using Docker then you probably like to live a little dangerously.

Putin is an animal lover

One More Thing

But! We don’t just shit unsigned packages into the void like wild animals. No! We create repos­i­tories! We make Yum repo config­u­ra­tions! We create new GPG keys!

So, I give you Orange Fort Packages for EL7. Installing the release package gets you the repo and the GPG key, but you can just import the key into rpm’s GPG keyring if you’re so inclined:

$ rpm --import

Are you tracking this work anywhere?

Sure am! Here’s a GitHub repo for the Docker RPM work (note that it does not include the docker binary itself). All of my work is under the Apache License, version 2.0 and I encourage you to review & reuse it any way you see fit.