Create Dockerfiles for easily buildable Docker containers(crosbymichael.com)
crosbymichael.com
Create Dockerfiles for easily buildable Docker containers
http://crosbymichael.com/dockerfile-deep-dive.html
3 comments
With containers, Docker gave us universal compatibility for running software. A Dockerfile gives us universal compatibility for building and customizing our software. Docker needs some time for the community to grow and the documentation to mature, but once it does I think it will be difficult to imagine ever not having Docker. Docker is largely "batteries not included," and slowly getting more useful with improvements like this, bind mounts [1], and lots of users writing their own tutorials.
1: https://github.com/dotcloud/docker/pull/602
1: https://github.com/dotcloud/docker/pull/602
I like Go and all but it seems like it is a poor choice for this project. Is there a good rationale for why you would use go to build this?
I have always felt that Go was the perfect choice for docker. Statically compiled binary, fast, simple but powerful.
We chose Go, even though we're traditionally a Python shop, for a few reasons:
1) It compiles to a static binary, which makes it very easy to drop docker into an existing ops stack with very little hassle and without having to drag a whole language-specific toolbox along. This has made it easier to adopt docker for devops teams of ruby, python and java persuasion (among others).
2) the language itself is straight-forward, easy to learn and familiar to a lot of people. It's basically a more accessible C. As a result it's been easier to get people from different programming backgrounds to contribute.
This is in addition to, you know, the language being good :)
1) It compiles to a static binary, which makes it very easy to drop docker into an existing ops stack with very little hassle and without having to drag a whole language-specific toolbox along. This has made it easier to adopt docker for devops teams of ruby, python and java persuasion (among others).
2) the language itself is straight-forward, easy to learn and familiar to a lot of people. It's basically a more accessible C. As a result it's been easier to get people from different programming backgrounds to contribute.
This is in addition to, you know, the language being good :)
I do like 1) and I agree with your final point. However, all the error handling code, etc is pretty brutal. I imagine someone will put a few scripting languages on top of it at some point.
Source repo comes in, container comes out. No other exchange of information necessary. The only dependencies left are 1) the hardware architecture, 2) the kernel and 3) the docker runtime (which is itself a 5MB static binary).
This makes things like this potentially possible:
Voila, you are running Redis - built and configured to the specifications of Salvatore himself.