Baseimage-docker, fat containers and “treating containers as VMs”
blog.phusion.nl
blog.phusion.nl
However seeing as other people have managed to distribute their applications in images as small as 7mb (e.g. progrium/logspout), I decided to create one based on busybox with s6 as the process supervisor, with help from this article [1]. I'm now pretty happy with my 33mb nodejs environment :)
[1]: http://blog.tutum.co/2014/12/02/docker-and-s6-my-new-favorit...
I'm wondering if there's a middle ground— for example, a busybox container which gives you python and pip, or workflow which lets you install a deb and all its dependencies into a container, without the container needing to itself have all the apt machinery and other bootstrap detritus on board.
docker-nano is based on buildroot which is kinda automated way of doing that
1. "we are the most popular third party image on the Docker Registry". This is true based on the # of stars, but that can be misleading when you look at the actual number of pulls. Don't get me wrong, phusion/baseimage is popular with about 230k pulls, but if you look around there are dozens of images with millions of downloads, so your claims are a bit misleading.
2. phusion/baseimage inherits from the official ubuntu:14.04 image. It adds a lot of things, and starts a number of services by default, so it is absolutely a "fat" VM-like container. I'm not against this at all, but I will point out that the Dockerfile Best Practices article (http://docs.docker.com/articles/dockerfile_best-practices/) is explicit that a container should kick off one process. If you look at how the highly curated official repositories function, none of them run more than one process or utilize a supervisor. Docker gives you the freedom to do whatever you want, but calling phusion/baseimage a "correct" way to do Docker conflicts with the official documentation. I totally get that phusion/baseimage has been around for a long time, and provides solutions to some common problems which may make adoption easier for some with legacy apps, but I would refrain from claiming that your solutions "gets everything right". By all means, use whatever works, just be aware that the best practices are clearly outlined on docs.docker.com, not the Phusion blog.
The image size doesn't bother me. Storage is cheap, and I can easily clear out the old cruft using "docker rmi $(docker images -q -f dangling=true)". Why should I care about 200mb in the age of multi-terabyte drives?