Docker is a virtualization solution that's been gaining a lot of momentum over the last few years. It focuses on light-weight, ephemeral containers that can be created based on simple config files.
Docker's main target platform is amd64, but it also works on x86. However, practically all official container images in the Docker registry are amd64 based, which means they can't be used on an x86 machine. So, it's necessary to manually create the required base images. As you might have guessed, my server runs Docker on x86, so I've had to find a solution for that problem.
Fortunately, creating images from scratch is really easy with the
script that comes bundled with Docker. On Debian systems, its installed in
/usr/share/docker.io/contrib/mkimage.sh, on Fedora it has to be
obtained from the Docker git repository:
$ git clone https://github.com/docker/docker.git
The script can then be found under
Creating a Debian Jessie image is straight-forward:
# mkimage.sh -t debootstrap/minbase debootstrap --variant=minbase jessie
This command will create a minimal Debian Jessie image using Debootstrap,
and import it into Docker with the name
debootstrap/minbase. Further options
can set a specific Debian mirror server and a list of additional packages to
# mkimage.sh -t debootstrap/minbase debootstrap \ --include=locales --variant=minbase \ jessie http://httpredir.debian.org/debian
This will use
as mirror and install the
locales package in the image.
mkimage.sh has backends to bootstrap Arch Linux, Busybox, Centos, Mageia, and
Ubuntu. Fedora images doesn't seem to be supported directly, but they can be
generated by following
compiled by James Labocki.
Finally, it's worth mentioning that this should only be used to generate base images. You'd then use Docker itself (cf. Dockerfile) to create images that actually do something interesting, based on these base images. This will save both time and memory, due to Docker's caching and copy-on-write mechanisms.