Docker Versus a Fossil

Docker is essentially “container tooling 2.0” following the 1.0 attempts of LXC. And it now has a number of competitors - including the original LXC project. All of them look interesting and rapid feedback loops are making them better.

Containers themselves aren’t really magical. They’re based on a number of newer namespace services in the Linux kernel. If you’re curious, Julia Evans has written some great pieces on how containers work with Running containers without Docker being a really good starting point.

Her articles show an interest in exploring and learning why things work as they do. A new tool shows up that could be useful and she dissects it to see how it works. A good, positive approach to an industry rapidly changing.

A bad starting point would be this article which a friend shared without comment on Facebook. This is just a rant about something new from someone who doesn’t want to change. The stereotype is that it’s an old guy, but it can be a young person too. People can get stuck in their ways at any age.

We’re just at the beginning of widespread computing. New ideas have to happen - there’s no way we’ve thought of the best ways to do things in the first 40 years of this field. Not possible. And every year more and more people will be sharing their ideas. Hopefully a more diverse set of people at that. And some of those ideas will be good. And the velocity of those new ideas and the changes they bring will only increase.

My comment on the article on Facebook follows, highlighting some of the issues with the article. But on the whole they’re just a litany of excuses to avoid something new.

Article says: “It enumerates all images and remove them. The ones currently in use by running containers cannot be removed (it gives an error). It is dirty but it gets the job done.”

Article means: “I don’t know how to use awk.” He gets hung up on dates when the real issue is that you want to remove images that aren’t in use. Any others can be regenerated. I wrote this like four years ago; still works fine.

docker images \
  | awk '$1 == "<none>" {print $3}' \
  | xargs -r docker rmi

Article says: “That was a 7 hours interplanetary outage because of Docker.”

Article means: “planetary” because TCP is not an interplanetary protocol. This is just trying to over-exaggerate things to make the thing bringing change worse sounding than it really is.

Article says: “There are 3 versions of the docker registry. The client can pull indifferently from any:”

Article means: “I have no idea how many other organizations offer docker registries.” Pretty much every tool has an ecosystem - it pays to explore that.

Article says: “It’s impossible to remove images from the docker registry.”

Article means: “I can’t read API docs.” https://github.com/.../blob/master/docs/spec/api.md...

Article says: “It was done a long time ago and we don’t remember all the details but we suppose that it has to do with the way Erlang do lots of light processes and RPC. Docker cannot take it.”

Article means: “I don’t know what the fuck I’m talking about and think computers are magic.” A running docker container is just a process tree and an isolated filesystem. It’s not that hard to debug.

Article says: “It takes 5 years to make a good and stable software, Docker v1.0 is only 28 months old, it didn’t have time to mature.”

Article means: “I miss waterfall design projects and actual triplicate paper forms with carbon paper. My dream job is a project manager on a defense project.” Things haven’t moved that slow in decades in most of the world.

The rest is more of the same. Don’t be this person. Be curious. Figure out how your tools work. If you have issues figure out exactly what they are and really look for solutions.